Spring Batch Java Config:exception时跳过步骤并转到下一步

例如我在工作中有3个步骤(类似于步骤1):

@Autowired private StepBuilderFactory stepBuilderFactory; @Bean public Step step1() { return stepBuilderFactory .get("step1") . chunk(1) .reader(reader()) .processor(processor()) .writer(writer()) .build(); } 

即使在步骤1中出现exception后,如何进入步骤2和3? 我的意思是用Java配置。

以下是创建流程时如何配置它的示例。 这应该类似于直接使用作业构建器配置它:

 return new FlowBuilder("name") .start(step1) // .next(step2).on(ExitStatus.FAILED.getExitCode()).to(errorStep) .from(step2).on(ALL_PATTERN).to(step3) .build(); 

您可以使用Skip Listener

 @Component public class CustomSkipListener { @OnSkipInRead public void onSkipInRead(Throwable t) { System.out.println("From onSkipInRead -> " + t.getMessage()); } @OnSkipInWrite public void onSkipInWrite(String item, Throwable t) { System.out.println("From onSkipInWrite: " + item + " -> " + t.getMessage()); } @OnSkipInProcess public void onSkipInProcess(String item, Throwable t) { System.out.println("From onSkipInProcess: " + string + " -> " + t.getMessage()); } } 

然后在你的步骤

 @Bean public Step step1(CustomSkipListener customSkipListener) { return stepBuilderFactory .get("step1") . chunk(1) .reader(reader()) .processor(processor()) .writer(writer()) .faultTolerant() .skipLimit(10) .skip(RuntimeException.class) .listener(customSkipListener) .build(); } 

注意CHAIN.faultTolerant() 。 添加侦听器不是必需的。 如果添加listener ,则可以在跳过时处理该行为。

一些有用的链接

http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/SkipListener.html

http://docs.spring.io/spring-batch/reference/html/configureStep.html#configuringSkip

您可以使用StepBuilder.faultTolerant方法并以此方式配置xml。

    

这对你的情况有帮助。

请看这个: http : //docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/builder/SimpleStepBuilder.html#faultTolerant–