spring 에서 async기능구현 필요가 있다면 메쏘드에 @Async를 사용하면 된다.
이 때, Application에는 @EnableAsync가 필요하다.
Retryable은 몇번의 실패을 다시 해주게 해주는데, 아래와 같이 사용하면된다.
정해진 실패 회수를 초과할 경우 @Recover함수가 불리게 되는데, exception + 파라미터가 동일하다는 점에 주의!
Application에는 @EnableRetry가 필요하다.
private static final int MAX_ATTEMPTS = 4; private static final long BACK_OFF_DELAY = 2000; //msec
@Retryable(value = DataAccessResourceFailureException.class,
maxAttempts = MAX_ATTEMPTS,
backoff = @Backoff(delay = BACK_OFF_DELAY))
public void checkAndProcess(String userKey, String itemId) {@Recover
public void recover(DataAccessResourceFailureException e, String userKey, String itemId) {
log.error("All retries have failed!, userKey:{} " + e.toString(), userKey);
}