Spring批处理作业csv文件读取从失败的行恢复
读者是这样看的,Spring批处理作业csv文件读取从失败的行恢复,spring,csv,spring-batch,Spring,Csv,Spring Batch,读者是这样看的, <bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"> <property name="resource" value="classpath:cvs/input/report.csv" /> <property name="lineMapper"> <
<bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" value="classpath:cvs/input/report.csv" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names" value="id,impressions" />
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="prototypeBeanName" value="report" />
</bean>
</property>
</bean>
</property>
</bean>
我想要实现的是,如果在读取CSV文件时,读卡器/作业失败,那么下一个计划的jobinstance应该从上次jobexecution失败的行启动读卡器。我可以在CustomProcessor process()函数中跟踪计数器处理的行
但是知道如何从上次执行的失败状态读取csv文件吗
我想手动启动/重新启动失败的作业。我是否应该执行此处所述的SkipPolicy
(CSV文件也可以是一个大数据库,但目前我正在CSV文件上测试此方案)如果应用程序失败,可以使用以下方法:
但是知道如何从上次执行的失败状态读取csv文件吗
将其添加到保存在批处理表中的批处理作业执行参数中
在应用程序启动时,在批处理作业执行中查找未完成的作业,然后手动重新启动
我想手动启动/重新启动失败的作业。我是否应该执行此处所述的SkipPolicy
我认为这是没有必要的,因为
如果要重新启动csv中的某些行,只需使用RetryPolicy:
Spring批处理自动处理失败的块(块,其中抛出异常) 这是某人的固有特征;这就是所谓的可重启性。@bellabax只需将restartable=“true”放在作业中即可实现它?没有必要,
restartable=“true”
是默认值OK。但是如果您想手动重新启动它呢?因为我想管理失败,然后再次手动启动。还有一件事,如果我的csv文件中有10行。读/写计数器为10,但提交计数器为11。为什么会这样?解释了不一致的提交计数。别担心
<batch:step id="processing-step">
<batch:tasklet>
<batch:chunk reader="csv_reader"
processor="csv_processor"
writer="csv_writer"
commit-interval="5">
<batch:retry-policy>
<bean class="org.springframework.retry.policy.AlwaysRetryPolicy" scope="step"/>
</batch:retry-policy>
</batch:chunk>
</batch:tasklet>
</batch:step>