본문 바로가기

Programming/Java & JSP & Spring

[Spring] @Retryable 어노테이션

특정 Exception이 발생했을 경우 일정 횟수만큼 재시도할 수 있는 어노테이션이다.

 

예를 들어, 서비스 내에서 다른 서비스에 있는 API를 호출할 때 간헐적으로 토신 오류가 발생할 수 있다.

하지만 이때마다 사용자가 에러메세지를 받아본다면 당혹스러울 것이다.

 

사용법은 아주 간단하다.

1. Spring Application에 @EnableRetry 어노테이션 추가

2. 재시도 하고 싶은 메소드에 @Retryable 어노테이션 추가

- include : 여기에 설정된 특정 Exception이 발생했을 경우 retry한다.

- exclude : 설정된 Exception 재시도 제외

- maxAttempts : 최대 재시도 횟수 (기본 3회)

- backoff : 재시도 pause 시간

@Retryable(include = [ResourceAccessException::class], backoff = Backoff(1000))  
class ApiCallService {
	...
}

예제 깃헙 코드