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>