-
스프링 배치 반복 및 오류 제어Spring/Spring Boot 2022. 3. 30. 23:39
Repeat
스프링 배치에서 반복을 종료할 것인지 여부를 결정하는 세가지 항목
1. RepeatStatus
- 스프링 배치의 처리가 끝났는지 판별 위한 열거형
- CONTINUABLE, FINISEHD
2. CompletionPolicy
- 정상 종료를 알리는데 사용. RepeatTemplate 의 iterate 메서드 안에서 반복을 중단할지 결정
3. ExceptionHandler
- 비정상 종료를 알림. RepeatCallback 안에서 예외 발생시 해당 핸들러를 참조해서 예외를 다시 던질지 여부 결정
RepeatContext
- 일시적으로 사용할 필요가 있는 데이터를 저장
tasklet 을 수행하다가 예외가 발생했다고 가정하자. 이 때 ExceptionHandler를 설정했다면 반복여부를 결정 할 수 있다.
설정하지 않았다면 CompletionPolicy를 보고 종료 정책에 따라 반복 여부를 결정한다. CompletionPolicy 에서도 종료되지 않았다면 마지막으로 RepeatStatus를 보게 된다
CompletionPolicy
TimeoutTerminationPolicy - 반복시점부터 현재시점까지 소요된 시간이 설정된 시간보다 크면 반복종료
CountingCompletionPolicy - 일정 카운트를 계산 및 집계해서 카운트 제한 조건이 만족하면 반복종료
SimpleCompletionPolicy - 현재 반복 횟수가 Chunk 갯수보다 크면 반복종료
ExceptionHandler
LogOrRethrowExceptionHandler - 예외를 로그로 기록할지 혹은 다시 던질지 결정
RethrowOnThresholdExceptionHandler - 지정된 유형의 예외가 임계 값에 도달시 다시 발생
SimpleLimitExceptionHandler - 예외 타입 중 하나가 발견되면 카운터가 증가하고 한계가 초과되었는지 여부 확인 후 Throwable 다시 던짐.
참고
'Spring > Spring Boot' 카테고리의 다른 글
스프링 트랜잭션 전파 (0) 2021.11.09 스프링 @Transaction 이해 (0) 2021.10.29 [springboot, kotlin] 배포시 FileReader FileNotFoundException (0) 2021.09.28 @ConfigurationPropertiesScan 과 생성자 바인딩 (1) 2020.12.15 application.properties 란? (0) 2020.08.29