❐ Retry
Retry
- Batch 처리에서 일시적인 오류(transient error) 때문에 전체 작업이 실패하는 걸 방지하기 위해,
자동 재시도(retry) 메커니즘을 제공한다.
- 예를 들어 이런 경우에 유용하다.
- 네트워크 일시 장애로 API 호출 실패
- DB Deadlock 발생 (DeadlockLoserDataAccessException)
- 외부 시스템 응답 지연
- 실패 시 바로 중단하지 않고 일정 횟수까지 재시도 하는 방식으로 안정성을 높인다.
Retry 기능의 분리
- Spring Batch 2.2.0 이후, Retry 기능은 별도의 라이브러리로 분리됐다.
- 예전엔 RepeatTemplate 내부에서 Retry 로직을 직접 포함했지만
- 지금은 Spring Retry가 RetryTemplate, BackOff, Policy 등을 담당하고,
- Spring Batch는 단지 이를 통합해서 사용하는 구조예요.
- 즉, Spring Batch의 내부 Retry 동작은 실제로 Spring Retry의 API를 기반으로 동작한다.
소스코드
// RetryOperations.java
public interface RetryOperations {...}
// BatchRetryTemplate.java
public class BatchRetryTemplate implements RetryOperations {...}
// FaultTolerantStepBuilder.java
public class FaultTolerantStepBuilder<I, O> extends SimpleStepBuilder<I, O> {...}