我正在尝试使用Spring Batch一起处理一堆预检查,验证和操作。
如果预检查或验证失败,那么我想重新运行所有预检查和验证,无论它们先前成功还是失败;但是如果操作失败,我只想从失败的操作开始。
我想在诸如FlowStep之类的步骤中对验证或预检查进行分组,但是似乎Spring retry不支持此功能。
有人知道解决方案吗?预先感谢!
答案 0 :(得分:0)
您可以在FlowStep
中将两个步骤分组,如下所示:
@Bean
public Flow preCheckAndValidationFlow() {
return new FlowBuilder<SimpleFlow>("flow")
.start(preCheckStep())
.next(validationStep())
.build();
}
@Bean
public Step preCheckAndValidationStep(JobRepository jobRepository) {
FlowStep flowStep = new FlowStep();
flowStep.setFlow(preCheckAndValidationFlow());
flowStep.setJobRepository(jobRepository);
return flowStep;
}
如果您想让preCheckStep
在验证步骤失败时重新运行(即使第一次成功),那么您需要在{{1}上设置allowStartIfComplete
标志}。
IMO,创建包含预检查和验证逻辑的单个步骤会更加简单。