提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、引入依賴
- 二、主啟動類上加@EnableRetry
- 三、Server層
- 注意
- 四、失敗后回調方法
- 總結
前言
提示:SpringBoot項目為例
??原文鏈接:https://blog.csdn.net/imVainiycos/article/details/123106451
一、引入依賴
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency>
</dependencies>
二、主啟動類上加@EnableRetry
@EnableRetry
@SpringBootApplication
public class KafkaApiApplication {public static void main(String[] args) {SpringApplication.run(KafkaApiApplication.class, args);}
}
三、Server層
注意
定義Controller層:下層需要進行throws拋出異常,或者我們進行try,catch;進行異常捕捉,
否則重試機制將會不生效。
@Retryable()注解中參數說明:
?? value:哪種異常情況下需要重試.
?? maxAttempts:最大重試次數
?? delay:重試延遲時間(毫秒計數)
?? multiplier:下次執行時間 =上次時間 * 倍數。
/*** 調用第三方接口,方法位置,添加重試注解,相關參數配置。*/@Retryable(value = Exception.class,maxAttempts = 3,backoff = @Backoff(delay = 5 * 60 * 1000,multiplier = 2))@Overridepublic void updateBatchOld(List<String> snList) {if (CollectionUtils.isNotEmpty(snList)) {List<DeviceDetailLowFrequency> ktdData = null;try {ktdData = inverterKtdFeign.getKtdData(snList);} catch (Exception e) {log.info("調用低頻接口失敗:"+ snList);throw new MyException(ResultCodeEnum.FEIGN_SERVICE_ERROR);}ktdData.forEach(a -> a.setUpdateTime(new Date()));this.updateBatchById(ktdData);}}
四、失敗后回調方法
?? 若在最大重試次數下,還是沒有成功,則回調方法編寫。
Service實現類中,代碼如下:
/*** 使用 @Recover注解*/@Recoverpublic void recover(Exception e){//記日志到數據庫 或 打印日志.}
引用原文鏈接:點擊跳轉
總結
??提示:好小子,你又在學習,打死你。