如何创建容错JobStep

时间:2017-01-27 04:05:35

标签: java spring spring-batch

我有一个Spring Batch项目,我有几个工作。我在一个作业中将它们模块化,按顺序执行它们:

@Autowired
@Qualifier("job1")
private Job job1;

@Autowired
@Qualifier("job2")
private Job job2;

@Autowired
@Qualifier("job3")
private Job job3;

@Bean(name = "step1")
public Step step1() {
    return stepBuilderFactory.get("step1").job(job1).build();
}

@Bean(name = "step2")
public Step step2() {
    return stepBuilderFactory.get("step2").job(job2).build();
}

@Bean(name = "step3")
public Step step3() {
    return stepBuilderFactory.get("step3").job(job3).build();
}

@Bean(name = "parentJob")
public Job parentJob(@Qualifier("step1") Step step1, @Qualifier("step2") Step step2, @Qualifier("step3") Step step3) {
    return jobBuilderFactory.get("parentJob")
            .incrementer(new RunIdIncrementer())
            .repository(jobRepository)
            .start(step1)
            .next(step2)
            .next(step3)
            .build();
}

但是,如果其中一个JobSteps失败,则父作业也会失败。是否有任何机制可以对所有JobSteps进行容错,以便如果其中一个失败,父作业会继续?

1 个答案:

答案 0 :(得分:1)

您基本上正在寻找here描述的条件流,即使前一个作业失败并且不是默认流,您也希望继续下一个作业。您需要使用模式 - *来实现这一目标。

在Java Config中,它可能是,.on("*").to(...)等等。

on(..)的模式参数可以是ExitStatus*的任何内容,前提是您没有使用任何其他自定义状态。

希望它有所帮助!!