首页 > 解决方案 > 我的弹簧批处理步骤在达到构建后一直循环

问题描述

此部分从我们的服务器读取文件,对其进行处理,将其写出并存档。

    @Bean
    public Step step1() {
        log.info("Made if to step1");
        System.out.println("Made it to Step 1");
        return this.stepBuilderFactory.get("step1")
                .<PaymentTransaction, PaymentTransaction>chunk(10)
                .reader(paymentTransactionItemReader())
                .writer(paymentTransactionItemWriter())
                .build();
    }

    @Bean
    public JobExecutionDecider decider() {
        System.out.println("Made it to the decider");
        return (jobExecution, stepExecution) -> new FlowExecutionStatus("Success"); }

    @Bean
    public FlowJobBuilder job() {
        return jobBuilderFactory.get("BenefitIssuance")
                .start(step1())
                .next(decider())
                .on("Success")
                .end()
                .build();
    }

但是,当它到达最后的 build() 步骤时,它会循环回到阅读器

标签: spring-batch

解决方案


正如评论中提到的,我不明白为什么该job()方法返回 aFlowJobBuilder而不是 a Job。以下作业定义不会在同一步骤上循环:

@Bean
public Job job() {
    return jobs.get("job")
            .start(step1())
               .next(decider())
               .on("Success")
               .end()
               .build()
            .build();
}

推荐阅读