最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot如何優(yōu)雅的實現(xiàn)重試功能

 更新時間:2023年06月14日 11:17:02   作者:努力的螞蟻【你若】  
這篇文章主要詳細介紹了SpringBoot如何優(yōu)雅的實現(xiàn)重試功能的步驟詳解,文中有詳細的代碼示例,具有一定的參考價值,感興趣的同學可以借鑒閱讀

使用背景

在有些特定場景,如和第三方對接。
我們調用接口時需要支持重試功能,第一次調用沒成功,我們需要等待x秒后再次調用。
通常會設置重試次數(shù),避免業(yè)務。
一般我們會這樣寫

public ApiResponse<Boolean> test() {
	//模擬調用
	System.out.println("開始調用,第" + num + "次");
	//業(yè)務邏輯
	boolean result = false;
	if (result) {
		System.out.println("執(zhí)行完成!");
	} else if (num >= totalNum) {
		System.out.println("重試結束");
		num = 1;
	} else {
		System.out.println("重試");
		++num;
		test();
	}
	return ApiResponse.ok(true);
}

這樣寫本身,沒什么問題。
但是如果多個接口都需要重試的話,代碼就不優(yōu)雅了。

spring-retry介紹

spring系列的spring-retry是另一個實用程序模塊,
可以幫助我們以標準方式處理任何特定操作的重試。
在spring-retry中,所有配置都是基于簡單注釋的。

快速使用

加入依賴

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

開啟Retry

啟動上增加注解@EnableRetry

@EnableRetry

使用

@GetMapping("test")
@Retryable(value = Exception.class,maxAttempts = 5,backoff = @Backoff(delay = 2000,multiplier = 1.5))
public ApiResponse<Boolean> test() {
	System.out.println("開始調用,第" + num + "次");
	boolean result = false;
	if (!result){
		num++;
		throw new BizException("調用失敗,需要重試");
	}
	System.out.println("執(zhí)行完成");
	return ApiResponse.ok(true);
}

參數(shù)

value:拋出指定異常才會重試
include:和value一樣,默認為空,當exclude也為空時,默認所有異常
exclude:指定不處理的異常
maxAttempts:最大重試次數(shù),默認5次
backoff:重試等待策略,默認使用@Backoff,@Backoff的value默認為1000L,我們設置為2000L;multiplier(指定延遲倍數(shù))默認為0,表示固定暫停1秒后進行重試,如果把multiplier設置為1.5,則第一次重試為2秒,第二次為3秒,第三次為4.5秒。

到此這篇關于SpringBoot如何優(yōu)雅的實現(xiàn)重試功能的文章就介紹到這了,更多相關SpringBoot實現(xiàn)重試功能內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaFX程序初次運行創(chuàng)建數(shù)據(jù)庫并執(zhí)行建表SQL詳解

    JavaFX程序初次運行創(chuàng)建數(shù)據(jù)庫并執(zhí)行建表SQL詳解

    這篇文章主要介紹了JavaFX程序初次運行創(chuàng)建數(shù)據(jù)庫并執(zhí)行建表SQL詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • JPA配置詳解之jpaProperties用法

    JPA配置詳解之jpaProperties用法

    這篇文章主要介紹了JPA配置詳解之jpaProperties用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java并發(fā)編程之Semaphore的使用簡介

    Java并發(fā)編程之Semaphore的使用簡介

    這篇文章主要介紹了Java并發(fā)編程之Semaphore的使用簡介,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-04-04
  • Java8實現(xiàn)Stream流的合并的方法展示

    Java8實現(xiàn)Stream流的合并的方法展示

    本文介紹了Java8中Stream流的合并方法,包括concat()、flatMap()和reduce()三種方法。其中,concat()方法可以將兩個Stream流合并成一個,flatMap()方法可以將一個Stream流中的元素映射成多個Stream流并合并成一個,reduce()方法可以將Stream流中的元素逐個合并成一個結果
    2023-05-05
  • 帶你了解Java數(shù)據(jù)結構和算法之前綴,中綴和后綴表達式

    帶你了解Java數(shù)據(jù)結構和算法之前綴,中綴和后綴表達式

    這篇文章主要為大家介紹了Java的前綴,中綴和后綴表達式 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • java實現(xiàn)幸運抽獎功能

    java實現(xiàn)幸運抽獎功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)幸運抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java虛擬機(JVM)的自帶工具使用詳解

    Java虛擬機(JVM)的自帶工具使用詳解

    文章介紹了Java開發(fā)中常用的幾個工具及其基本用法,包括jps、jstat、jinfo、jmap、jhat和jstack,這些工具幫助開發(fā)者監(jiān)控和分析Java應用程序的性能和內存使用情況,對于排查問題和優(yōu)化性能非常有幫助
    2026-01-01
  • Java HashSet集合存儲遍歷學生對象代碼實例

    Java HashSet集合存儲遍歷學生對象代碼實例

    這篇文章主要介紹了Java HashSet集合存儲遍歷學生對象代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java線程中斷的本質深入理解

    Java線程中斷的本質深入理解

    Java的中斷是一種協(xié)作機制。也就是說調用線程對象的interrupt方法并不一定就中斷了正在運行的線程,它只是要求線程自己在合適的時機中斷自己,本文將詳細介紹,需要了解的朋友可以參考下
    2012-12-12
  • Spring事務和事務傳播機制操作大全

    Spring事務和事務傳播機制操作大全

    Spring中事務管理主要分為編程式事務和聲明式事務,聲明式事務推薦使用,聲明式事務通過`@Transactional`注解實現(xiàn),可以簡化事務操作,本文給大家介紹Spring事務和事務傳播機制,感興趣的朋友跟隨小編一起看看吧
    2025-12-12

最新評論

东乌| 山阳县| 平罗县| 南雄市| 裕民县| 临泽县| 娱乐| 闽清县| 德庆县| 于田县| 綦江县| 太湖县| 鄂伦春自治旗| 寿阳县| 张掖市| 青铜峡市| 崇信县| 台前县| 汉川市| 金山区| 拉孜县| 茂名市| 龙南县| 拉萨市| 普陀区| 长宁县| 葵青区| 沾化县| 民乐县| 定陶县| 丁青县| 乌兰察布市| 望都县| 太仓市| 舞钢市| 甘孜县| 曲麻莱县| 汾西县| 哈尔滨市| 清镇市| 宁陕县|