2017-10-24 14 views
1

SpringBoot 응용 프로그램에는 POST 요청을 보낼 수있는 클라이언트가 있습니다. POST 중에는 몇 가지 예외가있을 수 있습니다.Spring에서 다른 예외에 대한 다른 재시도 시도 @Retryable

2 가지 예외가있을 경우 재시도 논리를 원합니다. 그러나 max-retry 시도는 각 예외마다 적용되어야하며 동시에 수행되지 않아야합니다. 설명하기가 어렵지만 예 :

최대 재시도 시도 횟수는 3으로 설정됩니다. 재 시도보다 예외 1 유형이 발생하면 2 번 시도해 봅니다. 다시 시도해 예외 1을 다시 시도한 다음 다시 시도하면 이제 1 회의 재 시도가 남았습니다. 다시 시도해보십시오. 이제 예외 2를 얻은 다음 다시 시도하십시오. 이전 재 시도가 exception1에 대한 것이었고 예외 2에 대한 것이 아니기 때문에 다시 2 번 시도했습니다. 따라서 예외 2 재시도가 방금 시작되었습니다.

가능합니까?

@Retryable(maxAttempts = 3, value = {Exception1.class, Exception2.class}, backoff = @Backoff(delay = 3000, multiplier = 2)) 

답변

1

당신은 할 것이다 정책을 다시 시도 정의를 만들 : exception1가 발생하고 exception2가 발생하면 그때는 1 재시도 왼쪽을했다, 나는이 시도했다, 그러나 이것은 다른 예외에 대한 재시도 시도를 통해 시작하지 않습니다 ; RetryTemplateRetryOperationsInterceptor으로 구성하십시오. 주석에 interceptor 속성을 사용하여 인터셉터를 참조하십시오.

+0

이 예가 무엇입니까? 왜냐하면 제가 설명한 것처럼 다른 예외를 가진 적절한 예를 찾을 수 없었기 때문입니다. – victorio

+1

아니요; 앞에서 말한 것처럼 논리를 추가하는 맞춤 정책을 만들어야합니다. –