Spring

[Spring Batch] TaskletStep 아키텍처

꾸준함. 2023. 7. 11. 00:03

TaskletStep 간단 요약

1. Job이 Step을 실행

2. Step은 RepeatTemplate 내 Tasklet을 실행

3. Tasklet 내 비즈니스 로직 수행 후 예외 발생 여부에 따른 조건 분기

3.1 예외 발생 시 반복문 종료 및 Step 종료

4. 정상적으로 비즈니스 로직이 수행될 경우 RepeatStatus에 따른 조건 분기

4.1 RepeatStatus가 FINISHED일 경우 반복문 종료 및 Step 종료

4.2 RepeatStatus가 CONTINUABLE일 경우 2번으로 돌아가서 다시 Tasklet 실행

 

 

TaskletStep 상세

1. SimpleJob이 각각의 Step들을 실행합니다.

  • SimpleJob 아키텍처는 https://jaimemin.tistory.com/2300 참고
  • StepExecution 생성 및 ExecutionContext 저장
  • 배치 상태는 STARTED, ExitStatus는 Executing
  • SimpleStepHandler의 handleStep 메서드에서 확인 가능

 

SimpleStepHandler의 handleStep 메서드 내 1번 과정

 

2. 등록된 StepExecutionListener의 beforeStep() 메서드 호출합니다.

  • AbstractStep 클래스 내 execute 메서드에서 확인 가능

 

 

3. RepeatTemplate(stepOperations) 내 Tasklet을 반복 수행합니다.

  • RepeatStatus의 별도 값을 부여하지 않을 경우 즉, null일 경우 FINISHED 처리
  • TaskletStep 클래스 내 doExecute() 메서드 통해 확인 가능

 

 

4. 등록된 StepExecutionListener의 afterStep() 메서드를 호출하고 StepExecution을 최종 업데이트 합니다.

  • 통상적으로 exitStatus와 batchStatus를 동일하게 업데이트
  • AbstractStep 클래스 내 execute 메서드에서 확인 가능

 

커스텀한 종료 코드로 업데이트할 수 있음

 

위 내용을 정리한 그림

 

 

출처

스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch (정수원 강사님)

반응형