Spring-retry 優雅地重試機制
如何有什麼問題出錯需要重試,不用繁瑣的寫for循環去手動重試,可以使用Spring-retry優雅地實作.
第一步:導入spring-retry
build.gradle 中添加代碼:
dependencies {
compile('org.springframework.retry:spring-retry:1.2.2.RELEASE')
}
第二步:在類上添加注解 @EnableRetry
@EnableRetry
public class needRetryService {
public void needRetryFunction {
if (condition){
new SomeException("some exception occur!");
}
}
第三步:在需要重試的方法上添加注解 @Retryable
@EnableRetry
public class needRetryService {
@Retryable(include = SomeException.class, maxAttempts = 3)
public void needRetryFunction {
if (condition){
throws new SomeException("some exception occur!");
}
}
到這裡就完成重試功能了,解釋一下工作過程:
當調用needRetryService中的needRetryFunction時,如果抛出了異常SomeException,就會被重試,預設重試3次。
但是如果三次都失敗了,想要捕獲異常,給使用者良好的使用者體驗,就需要第四步。
第四步:添加重試失敗之後處理的方法
@Recover
public void exceptionHandler(SomeException e) {
log.error("some exception " + e.getMessage());
}
重試第三次仍然抛出異常,就會執行exceptionHandler方法,并輸出異常資訊。