Spring Batch作业CSV文件读取从失败的线路中恢复



读者看起来像这样,

<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 http://thisisurl.com/spring-batch-skip-and-retry?

(CSV文件也可以是一个大的DB,但是现在我正在CSV文件上测试此情况)

如果您的应用程序失败,则可以使用:

但是,如何从上一个执行失败状态中读取CSV文件?

将其添加到批处理表 batch_job_execution_params 的JobParameters。

在应用程序启动时,在 batch_job_execution中查找不完整的作业并重新启动手动。

我想手动启动/重新启动失败的作业。我应该如下所述实现skippolicy http://thisisurl.com/spring-batch-skip-and-retry?

我认为这不是必需的。

如果要在CSV中重新启动一些行,只需使用retrypolicy:

    <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>

春季批处理自动处理失败的块(块,其中抛出异常)。文档。

最新更新