복붙노트

[SPRING] Spring Batch Java Config : 예외가 발생하면 단계를 생략하고 다음 단계로 넘어갑니다.

SPRING

Spring 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. ==============================

    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. ==============================

    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. ==============================

    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--

  4. 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