1.pom導入
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
2.在啓動類加入
@EnableRetry表示開啓重試規則
3.在需要做重試函數加入註解
@Retryable(value = {Exception.class}, maxAttempts = 20, backoff = @Backoff(delay = 5000, multiplier = 2))
註解說明
@Retryable:標註此註解的方法在發生異常時會進行重試
參數說明:value:拋出指定異常纔會重試
include:和value一樣,默認爲空,當exclude也爲空時,默認所以異常
exclude:指定不處理的異常
maxAttempts:最大重試次數,默認3次
backoff:重試等待策略,默認使用@Backoff,@Backoff的value默認爲1000L,multiplier(指定延遲倍數)
默認爲0,表示固定暫停1秒後進行重試,如果把multiplier設置爲2,則第一次重試爲1秒,第二次爲
2秒,第三次爲4秒
@Recover:用於@Retryable重試失敗後處理方法,此方法裏的異常一定要是@Retryable方法裏拋出的異常,否則不會調用
這個方法
4.在該類中加入重試到設定次數後仍然失敗後執行的函數
@Recover
public void recover(Exception e) {
logger.error("基礎數據添加失敗" + e.getMessage());
e.printStackTrace();
}
注意value = {Exception.class} 其中異常類型需要和public void recover(Exception e)中的異常類型一樣
這裏可以指定重試哪幾種異常