SpringBoot集成接口重試Retry

SpringBoot集成接口重試Retry

前言

在實際的應用中,我們經常需要調用第三方API來獲取數據或執行某些操作。然而,由于網絡不穩定、第三方服務異常等原因,API調用可能會失敗。為了提高系統的穩定性和可靠性,我們通常會考慮實現重試機制。

集成

1、引入pom坐標

		<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId></dependency>

同時需要aop的依賴包:

	<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

啟動類加注解:

@EnableRetry

2、代碼示例

2.1配置重試策略
	@Override@Retryable(value = {RestClientException.class},maxAttempts = 3,backoff = @Backoff(delay = 1000,multiplier = 2))public String callThirdPartyApi() {//調用第三方API接口邏輯return null;}

@Retryable注解標記了callThirdPartyApi方法,指定了當發生RestClientException異常時進行重試。

maxAttempts指定最大重試次數。

backoff指定了重試間隔的初始延遲和延遲倍數。

2.2降級處理
	@Override@Retryable(value = {RestClientException.class},maxAttempts = 3,backoff = @Backoff(delay = 1000,multiplier = 2))public String callThirdPartyApi() {//調用第三方API接口邏輯return null;}@Recoverpublic String fallback(){//降級處理邏輯return null;}

@Recover注解標記了fallback方法,當callThirdPartyApi方法的重試次數達到上限時,將執行fallback方法中的降級邏輯。

2.3異步方法的重試及降級
	@Async@Retryable(value = {RestClientException.class},maxAttempts = 3,backoff = @Backoff(delay = 1000,multiplier = 2))public CompletableFuture<String> callAsyncThirdPartyApi() {//調用第三方API接口邏輯}@Recoverpublic CompletableFuture<String> fallback() {// 異步降級處理邏輯}
2.4異常分類與重試
@Retryable(value = { RestClientException.class, TimeoutException.class },maxAttempts = 3,backoff = @Backoff(delay = 1000, multiplier = 2))public String callThirdPartyApi() {// 調用第三方API的邏輯// ...}

callThirdPartyApi方法會在發生RestClientExceptionTimeoutException異常時進行重試。

@Retryable(value = { RestClientException.class },maxAttempts = 3,backoff = @Backoff(delay = 1000, multiplier = 2),exclude = { TimeoutException.class })public String callThirdPartyApi() {// 調用第三方API的邏輯// ...}

callThirdPartyApi方法會在發生RestClientException異常時進行重試,但排除了TimeoutException異常。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710935.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SDR架構 (一)為什么基帶有I和Q路?

我之前做過自己的RTL-SDR。一直有一個疑惑。為啥rtl2832u芯片有一對差分I路&#xff0c;還有一對差分Q路。差分很好理解是為了抗干擾&#xff0c;但為啥要I和Q呢&#xff1f;并且我也知道不少人在自己修改的時候&#xff0c;保留I路對接在r820t2&#xff08;跟原版一樣&#xf…

整數與IP地址間的轉換(牛客網算法/Javascript Node)

描述 原理&#xff1a;ip地址的每段可以看成是一個0-255的整數&#xff0c;把每段拆分成一個二進制形式組合起來&#xff0c;然后把這個二進制數轉變成 一個長整數。 舉例&#xff1a;一個ip地址為10.0.3.193 每段數字 相對應的二進制數 10 00001010 0 00000000 3 00000011 193…

開放簽電子簽章企業版上線【移動端功能(v1.5版本)】

春節序曲奏響創新華章&#xff0c;緊鑼密鼓的工作節奏下&#xff0c;開放簽支持移動端簽署啦&#xff01; 在這個萬家燈火的春節之際&#xff0c;開放簽團隊憑借高效的團隊協作&#xff0c;在節日的熱烈氛圍中成功推出了全新版本&#xff08;企業版1.5版&#xff09;&#xff…

逆變器專題(12)-弱電網

相應仿真原件請移步資源下載 通常情況下&#xff0c;理想電網都為強電網&#xff0c;但隨著光伏并網系統的大力發展&#xff0c;分布式光伏也越發鼎盛&#xff0c;越來越多的電力電子設備接入大電網、并且考慮能源利用問題&#xff0c;大部分光伏電站都建在戈壁沙漠等地區&…

多行業萬能預約門店小程序源碼系統 支持多門店預約小程序 帶完整的安裝代碼包以及搭建教程

隨著消費者對于服務體驗要求的不斷提升&#xff0c;門店預約系統成為了許多行業提升服務質量、提高運營效率的重要工具。然而&#xff0c;市面上的預約系統往往功能單一&#xff0c;無法滿足多行業、多場景的個性化需求。下面&#xff0c;小編集合了多年的行業經驗和技術積累&a…

巖土工程中的振弦采集儀技術發展與前景展望

巖土工程中的振弦采集儀技術發展與前景展望 河北穩控科技振弦采集儀是一種常用的巖土工程監測儀器&#xff0c;用于測量土壤或巖石的振動特性。隨著巖土工程領域的發展和技術的進步&#xff0c;振弦采集儀技術也得到了不斷的發展和改進。以下是對振弦采集儀技術發展與前景的展…

css5定位

css 一.定位1.概念&#xff08;定位定位模式邊位移&#xff09;2.靜態位移static&#xff08;不常用&#xff09;3.相對定位relative&#xff08;不脫標&#xff09;&#xff08;占位置&#xff09;4.絕對定位absolute&#xff08;脫標&#xff09;&#xff08;不占位置&#x…

VScode 單步斷點調試Nodejs方法總結

目錄 方法一 方法二 方法三 方法一 使用vscode開發nodejs程序,能夠啟動單步調試模式,在指定代碼處添加斷點,像chrome、firefox瀏覽器上一樣進行JavaScript的調試。 新建一個nodejs的工程,編寫代碼后,配置代碼調試的步驟: 1、切換到代碼調試界面 2、界面提示,新建一…

mybatis-plus中service層的CRUD使用示例

mybatis-plus service層的CRUD使用示例 MyBatis-Plus 是 MyBatis 的增強工具&#xff0c;在 MyBatis 的基礎上提供了更便捷的 CRUD 操作、分頁查詢、代碼生成等功能。在 Service 層使用 MyBatis-Plus 進行 CRUD 操作&#xff0c;通常需要創建一個 Service 類來調用 MyBatis-Pl…

基于springboot實現在線考試系統項目【項目源碼+論文說明】

基于springboot實現在線考試系統演示 摘要 時代在變化&#xff0c;科技技術以無法預測的速度在達到新的高度&#xff0c;并且被應用于社會生活的各個領域&#xff0c;隨著生活的加快&#xff0c;也使很多潛在的點逐漸突顯出來&#xff0c;社會對于人才的要總是非常迫切的&…

VScode保存自動格式化

要在Visual Studio Code&#xff08;VS Code&#xff09;中關閉保存自動格式化功能&#xff0c;您可以按照以下步驟操作&#xff1a; 1.打開VS Code編輯器。 2.點擊左上角的“文件”菜單&#xff0c;然后選擇“首選項”。 3.在彈出的菜單中&#xff0c;選擇“設置”選項。…

IDEA-DeBug理論與實踐

文章目錄 01_Debug簡介和意義02_IDEA中的Debug步驟03_跳轉到當前代碼執行的行04_步過調試的使用05_步入調試的使用06_強制步入調試的使用07_步出調試的使用08_回退斷點調試的使用09_運行到光標處10_計算表達式11_條件斷點12_多線程調試 在軟件開發中&#xff0c;IDEA&#xff0…

THINKPHP 跨域報錯解決方案

報錯&#xff1a;has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the requested resource. 環境&#xff1a;thinkphp6 nginx 今天和VUE配合調用接口的時候發現跨…

果園預售系統|基于Springboot的果園預售系統設計與實現(源碼+數據庫+文檔)

果園預售系統目錄 目錄 基于Springboot的果園預售系統設計與實現 一、前言 二、系統功能設計 三、系統功能設計 1 、果園管理 2、水果管理 3、果樹管理 4、公告管理 四、數據庫設計 1、實體ER圖 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲…

常見的4種Bug 出現原因和解決方案

某項目定期進行線上Bug分析大會&#xff0c;主要針對近期出現的Bug和事故進行分析其出現的原因。經過一段時間的數據分析和匯總&#xff0c;找到了在開發過程中&#xff0c;較為常見的Bug以及其出現的原因。 通過分析原因&#xff0c;進一步找到解決方案&#xff0c;從而有利于…

2024.02.29作業

1. TCP模型 server #include "test.h"#define SER_IP "192.168.191.128" #define SER_PORT 9999int main(int argc, char const *argv[]) {int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sfd){perror("socket error");return -1;…

Java底層自學大綱_數據結構和算法篇

數據結構和算法專題_自學大綱所屬類別學習主題建議課時&#xff08;h&#xff09; A 數據結構和算法001 數據結構和算法基礎&#xff0c;時間復雜度Ot和空間復雜度Os2.5 A 數據結構和算法002 數學知識回顧-指數、對數、級數、模運算、復雜度2.5 A 數據結構和算法003 高數知識…

算法沉淀——動態規劃之兩個數組的 dp(上)(leetcode真題剖析)

算法沉淀——動態規劃之兩個數組的 dp 01.最長公共子序列02.不相交的線03.不同的子序列04.通配符匹配 01.最長公共子序列 題目鏈接&#xff1a;https://leetcode.cn/problems/longest-common-subsequence/ 給定兩個字符串 text1 和 text2&#xff0c;返回這兩個字符串的最長 …

0201sherlock(福爾摩斯)-通過名稱尋找媒體賬號(地址)-github-開源項目學習

文章目錄 一 項目簡介二 項目安裝和演示1 安裝2 演示 三 源碼分析1 項目結構2 主程序源代碼分析 四 添加自定義網址結語 一 項目簡介 二 項目安裝和演示 1 安裝 # clone the repo $ git clone https://github.com/sherlock-project/sherlock.git# change the working direct…

前端訪問線上的html 怎么給html 的js中傳遞 訪問路徑

1.需求 我想在項目中訪問一個html 文件 這個html 文件中 跳轉的又是另一個地址 。這個需求是為了讓實現公眾號H5 的重定向登錄 主要是 一個oem 系統 他有多個公眾號 但是每個公眾號 都有對應不用的域名 2.動態域名 <!DOCTYPE html> <html lang"zh">&…