@retryable, @recover, retryTemplate, execute method를 활용했다.
위 내용의 예시로
Redis 통신이 실패했을 때(끊어졌을 때) @Retryable, @Recover를 활용
혹은
method가 실패했을 때 retryTemplate.execute 메서드 활용
일정 횟수 재시도 하여 결과를 반환하는 방식을 사용할 것이다.
Amazon ElastiCache for Redis면
Redis 통신이 실패할 일이 없겠지만
직접 구축한 Redis라면 언제나 통신이 실패할 일을 염두해 두어야 한다.
그래서 위 같은 로직을 만들었다.
흐름은 아래와 같다.
@SpringBootApplication
@EnableRetry
public class SampleTokenApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
@Retryable, @Recover를 활용하기 위해서는
main method에 @EnableRetry annotation을 추가해주어야 한다.
public class SampleTokenRepositoryImpl implements SampleTokenRepositoryCustom {
@Retryable(maxAttempts = 3) // maxAttempts default is 3
@Cacheable(value = "sampleToken")
@Override
public Token findByTokenId() {
// 원하는 쿼리 추가
}
@Recover
public Token findByTokenIdRecover() {
// 원하는 쿼리 추가
}
}
@Retryable 메서드를 3번 시도 후 실패할 경우 @Recover 메서드를 실행하게된다.
https://www.baeldung.com/spring-retry
'SpringBoot' 카테고리의 다른 글
jib 배포, 코드 배포, 코드 컨테이너, 앱 컨테이너 만들기 (0) | 2022.07.15 |
---|---|
String, StringBuilder, StringBuffer 사용법 및 차이 (0) | 2021.12.23 |
DB 통신 속도 증가 Cacheable CacheEvict redis 활용 (0) | 2021.12.21 |
Junit에서 assertThat(.isEqualTo) 활용하기 (0) | 2021.10.22 |
springboot로 Rest api 만들기(8) SpringSecurity를 이용한 인증 및 권한부여 (0) | 2021.10.22 |