Backend/Spring+Boot

[Spring Batch] Job flow

findmypiece 2022. 1. 4. 09:22
728x90

Step 의 상태에 따라 대략 아래와 같이 처리를 분기할 수 있다. 

@Bean
fun mainJob(): Job {
    return jobBuilderFactory["simpleJob"]
        .start(mainStep()) //mainStep 시작
            .on("FAILED") //FAILED 일 경우
            .to(errorStep()) //errorStep 으로 이동
            .on("*") // errorStep의 결과 관계 없이
            .end() // Flow 종료
        .from(mainStep()) //mainStep의 결과가
            .on("*") // FAILED 이외의 모든 경우
            .end() // Flow 종료
        .end() //Job 종료
        .build()
}

위 Step 이 실패했을 경우 적절한 에러처리를 위해 에러 Step 으로 분기처리 하는 내용이다. 몇가지 확인해야 할 사항은 아래와 같다.

 

  • 상태체크는 Step 부터 가능한데 on절로 정의 가능하며 기본적으로 ExitStatus 에 정의된 상태를 활용할 수 있다.
  • on 절로 체크한 결과에 따라 이동시킬 Step 은 to 절로 정의 가능하다.
  • on 절로 체크를 시작했다면 반드시 to가 명시되어야 한다.
  • to가 명시되었다면 해당 Step 의 결과에 따른 처리도 반드시 명시되어야 한다.
  • 결국 on 절로 시작된 체크는 최종적으로 end로 끝내야 한다.
  • 일반적인 개발언어와 비교하면 on 절은 if 분기와 같다. 이에 대비되는 else를 반드시 명시해줘야 하고 from이 그 역할을 한다.
  • on 절과 from 절을 정의했다면 해당 Flow는 반드시 end로 끝내줘야 한다.
  • Job의 end 도 별개로 반드시 있어야 한다.

 

https://jojoldu.tistory.com/328
https://velog.io/@lxxjn0/Spring-Batch-Guide-04.-Spring-Batch-Job-Flow

 

 

728x90