본문 바로가기

Web/웹 상식

Spring Retry에 대해서

Spring Retry

1. 재시도 하는 방법

웹 개발 시에 어떠한 특정 로직을 재시도 해야하는 일이 있었습니다. 그래서 찾아본 방법은

 

  1. Spring Retry 활용
  2. Apache HttpClient의 Retry 기능 활용
  3. 로직 실패 시에 재실행 하도록 코딩

이 정도가 있었습니다. 하지만 그래도 Spring을 활용하는 방식이 가장 좋은 것 같아 사용해보고 정리한 글입니다.

 

2. 사용 방법

1. 의존성 추가

저는 maven을 사용했으므로 maven 기준에서 적겠습니다. retry와 aspects 2개가 필요합니다.

 

<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
    <version>1.2.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>5.2.8.RELEASE</version>
</dependency>

 

2. Retry 기능 활성화

spring boot라면 springBootApplication 같은 진입점 혹은 Configuration에 @EnableRetry를 붙여 기능을 활성화 합니다.

@SpringBootApplication
@EnableRetry
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}



@EnableRetry
@Configuration
public class RetryConfiguration {
    
}

 

3. Retry 시키고 싶은 메소드에 어노테이션 달기

@Retryable(value = {ApiFailException.class}, maxAttempts = 3, backoff = @Backoff(delay = 500))
public ABC targetMethod(String str) {

}

 

  • value : 해당 exception 발생시 retry 실행
  • maxAttempts : 최대 시도 횟수, Default는 3
  • backoff : retry 시도간 딜레이

 

4. Retry 최종 실패시 실행할 메소드에 어노테이션 달기

@Recover
public ABC recoverMethod(ApiFailException exception, String str) {

}

 

Recover 메소드의 인자로는 (Retry 메소드의 exception, Retry 메소드의 인자) 형식으로 들어갑니다 

 

5. 주의할 점

  • retryable 메소드와 recover 메소드는 같은 반환형을 가져야합니다. 그렇지 않으면 Recovery method를 찾지 못한다는 오류가 발생합니다.

 

위 처럼 사용하는 것이 가장 간단한 사용방법입니다. 더 원하는대로 맞춰서 사용하려면 retry template을 사용하시면 됩니다. retry template에 관한 내용은 다음 게시글에서 다루겠습니다.

 

 

반응형

'Web > 웹 상식' 카테고리의 다른 글

Java에서 외부 프로세스 실행하기  (0) 2021.04.07
Http와 Rest API에 대한 간단한 정리  (0) 2021.03.05
Vue.js 3.0 과 Vite  (0) 2020.09.23
Spring Webflux에 대하여  (0) 2020.09.14
Apache-Tomcat 설정 파일 정리  (0) 2020.09.11