读者看起来像这样,
<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文件时读取器/作业失败,那么下一个预定的作业实例应该从上次作业执行失败的行开始读取。我可以跟踪CustomProcessor process()函数中计数器处理的行。
但是任何想法如何从上次执行的失败状态读取csv文件?
我想手动启动/重启失败的作业。我应该如http://thisisurl.com/spring-batch-skip-and-retry所述实现SkipPolicy吗?
(CSV文件也可以是一个大数据库,但是现在我在CSV文件上测试这个场景)
答案 0 :(得分:1)
但是有没有想过如何从上次执行的失败状态读取csv文件?
将其添加到批处理表 batch_job_execution_params 中保存的jobParameters。
在应用程序启动时,在 batch_job_execution 中找到未完成的作业,并在manualy中重新启动。
我想手动启动/重启失败的作业。我应该如http://thisisurl.com/spring-batch-skip-and-retry所述实现SkipPolicy吗?
对于restartability,我认为这不是必要的。
<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>
Spring Batch自动处理失败的块(块,其中抛出异常)。 Documentation