[SPRING] Spring Batch Java Config : 예외가 발생하면 단계를 생략하고 다음 단계로 넘어갑니다.
SPRINGSpring Batch Java Config : 예외가 발생하면 단계를 생략하고 다음 단계로 넘어갑니다.
예 : 나는 Step1과 비슷한 Job에서 3 단계를 가지고있다.
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Step step1() {
return stepBuilderFactory
.get("step1")
.<String, String> chunk(1)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}
1 단계에서 예외가 있더라도 2 단계와 3 단계는 어떻게됩니까? Java로 구성하는 것을 의미합니다.
해결법
-
==============================
1.다음은 흐름을 생성 할 때이를 구성하는 방법에 대한 예제입니다. 이는 작업 작성자와 직접 구성하는 것과 유사해야합니다.
다음은 흐름을 생성 할 때이를 구성하는 방법에 대한 예제입니다. 이는 작업 작성자와 직접 구성하는 것과 유사해야합니다.
return new FlowBuilder<SimpleFlow>("name") .start(step1) // .next(step2).on(ExitStatus.FAILED.getExitCode()).to(errorStep) .from(step2).on(ALL_PATTERN).to(step3) .build();
-
==============================
2.리스너 건너 뛰기를 사용할 수 있습니다.
리스너 건너 뛰기를 사용할 수 있습니다.
@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") .<String, String> chunk(1) .reader(reader()) .processor(processor()) .writer(writer()) .faultTolerant() .skipLimit(10) .skip(RuntimeException.class) .listener(customSkipListener) .build(); }
유용한 링크
http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/SkipListener.html
http://docs.spring.io/spring-batch/reference/html/configureStep.html#configuringSkip
-
==============================
3.StepBuilder.faultTolerant 메소드를 사용하고 XML을이 방식으로 구성 할 수 있습니다.
StepBuilder.faultTolerant 메소드를 사용하고 XML을이 방식으로 구성 할 수 있습니다.
<batch:skippable-exception-classes> <batch:include class="MyException"/> </batch:skippable-exception-classes>
이것은 당신의 경우에 도움이 될 것입니다.
이것을보십시오 : http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/builder/SimpleStepBuilder.html#faultTolerant--
from https://stackoverflow.com/questions/39134634/spring-batch-java-config-skip-step-when-exception-and-go-to-next-steps by cc-by-sa and MIT license