春季批作业失败

时间:2020-06-14 16:06:34

标签: spring spring-boot spring-batch

所有仍通过的步骤仍以失败的状态完成工作。

 @Bean
    public Job job() {
        return this.jobBuilderFactory.get("person-job")
                 .start(initializeBatch())
                 .next(readBodystep())
                 .on("STOPPED")
                 .stopAndRestart(initializeBatch())
                 .end()
                .validator(batchJobParamValidator)
                .incrementer(jobParametersIncrementer)
                .listener(jobListener)
                .build();
    }

@Bean
public Flow preProcessingFlow() {
    return new FlowBuilder<Flow>("preProcessingFlow")
            .start(extractFooterAndBodyStep())
            .next(readFooterStep())
            .build();
}
@Bean
public Step initializeBatch() {
    return this.stepBuilderFactory.get("initializeBatch")
            .flow(preProcessingFlow())
            .build();

public Step readBodystep() {
        return this.stepBuilderFactory.get("readChunkStep")
                .<PersonDTO, PersonBO>chunk(10)
                .reader(personFileBodyReader)
                .processor(itemProcessor())
                .writer(dummyWriter)
                .listener(new ReadFileStepListener())
                .listener(personFileBodyReader)
                .build();
    }

上述配置有什么问题吗? 当我删除stopAndRestart配置时,它会通过。

1 个答案:

答案 0 :(得分:0)

对于您的用例,您不需要END{print ""},而是在该步骤上设置stopAndRestart。这样一来,如果作业失败,即使该步骤在上一次运行中已成功完成,该步骤也将重新执行。