본문 바로가기

Programing/Framework

[Spring] spring-retry 재시도 및 백오프 정책 정리

재시도에 대한 생각을 할 때 일반적으로 참고를 할 수 있을 것 같아서 정리했다.
현재 사용하고 있는 spring-retry 1.2.5 기준이다.

RetryPolicy 인터페이스와 구현체들
BackOffPolicy 인터페이스와 구현체들

RetryPolicy (재시도 정책) SimpleRetryPolicy 주어진 횟수만큼만 반복 수행
AlwaysRetryPolicy 항상 재시도를 수행 - 테스트 용도나 수동 설정시 이용
NeverRetryPolicy 1회만 수행(재시도를 안함) - 테스트 용도나 수동 설정시 이용
CircuitBreakerRetryPolicy 서킷 브레이커 방식의 재시도 - 시스템 장애시 유용
ExceptionClassifierRetryPolicy 최종 예외 클래스에 기반한 재수행
TimeoutRetryPolicy 제한을 시간을 가지고 반복을 수행
ExpressionRetryPolicy DSL 기반의 재시도 구문을 기술
CompositeRetryPolicy

다른 정책과 혼합해서 적용

  • optimistic: 낙관/비관적 수행
  • policies: 정책들 목록
BackOffPolicy (백오프 정책) NoBackOffPolicy 별도의 백오프 정책을 하지 않음 (바로 수행)
FixedBackOffPolicy 고정된 길이 만큼 멈추었다가 재시도
ExponentialBackOffPolicy 지수 형태의 백오프 기간을 증가하여 재시도
ExponentialRandomBackOffPolicy 랜덤으로 증가하는 지수 형태의 백오프 기간을 증가하여 재시도
UniformRandomBackOffPolicy 최소 ~ 최대 기간 내에서 랜덤의 시간을 멈추었다가 재시도