【问题标题】:Spring batch Job Failing春季批处理作业失败
【发布时间】:2020-06-14 16:06:34
【问题描述】:

所有步骤都通过了,但作业已完成,状态为失败。

 @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 配置时,它正在通过。

【问题讨论】:

  • initializeBatch 是您工作的第一步。在工作的第一步添加stopAndRestart(initializeBatch()) 对我来说没有意义。为什么需要它?
  • 第一步是从服务器下载文件。因此,如果页脚中的记录数与否不同,我想从该步骤开始。的记录读取。这意味着文件已损坏。

标签: spring spring-boot spring-batch


【解决方案1】:

对于您的用例,您需要的不是stopAndRestart,而是在步骤上设置allowStartIfComplete。这样,如果作业失败,即使在之前的运行中成功完成了该步骤,也会重新执行该步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2012-10-19
    • 1970-01-01
    • 2021-12-17
    • 2018-10-04
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多