2017-10-10 111 views
3

是否可以根據特定條件重試?如果我使用Retryable進行註釋,它將根據某些異常重試,但如果捕獲該異常並滿足相應的條件,我想重試。 實施例:Spring @Retryable特定條件

@Retryable(value={MyException.class},maxAttempts=2) 
public myMethod(Request request){ 

    try{ 
     doSomething(); 
    } Catch(Exception ex){ 
     throw new MyException(); 
    } 

} 

在這裏,在上述請求,我有一個標誌,isRetryRequired如果這是真的和MyException被捕獲然後我想在註釋重試

+0

你應該拋出Catch塊的不同異常。 MyException如果你想重試它,MyOtherException(MyException)如果你想通知一個異常,但不重試,並且不會丟失堆棧跟蹤。 – UserF40

回答

0

不能直接;您將需要通過interceptor屬性的自定義重試策略。

+0

由於我不確定這個標誌,我該如何攔截請求。其由客戶端發送的標誌 – user123475

+1

請參見[documentation](https://github.com/spring-projects/spring-retry)。使用自定義策略創建和配置'RetryOperationsInterceptor' bean,並在註釋中提供對攔截器的引用。 –