欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

使用背景

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

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

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

spring-retry介紹

spring系列的spring-retry是另一個(gè)實(shí)用程序模塊,
可以幫助我們以標(biāo)準(zhǔn)方式處理任何特定操作的重試。
在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

啟動(dòng)上增加注解@EnableRetry

@EnableRetry

使用

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

參數(shù)

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

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

相關(guān)文章

  • java并發(fā)編程死鎖定義及如何避免死鎖

    java并發(fā)編程死鎖定義及如何避免死鎖

    這篇文章主要為大家介紹了java并發(fā)編程中死鎖的詳細(xì)說明及如何避免死鎖的方法,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • spring異步service中處理線程數(shù)限制詳解

    spring異步service中處理線程數(shù)限制詳解

    這篇文章主要給大家介紹了關(guān)于spring異步service中處理線程數(shù)限制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例

    SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例

    數(shù)據(jù)脫敏主要應(yīng)用在客戶安全數(shù)據(jù)或商業(yè)性敏感數(shù)據(jù)的情況,本文主要介紹了SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Java泛型機(jī)制必要性及原理解析

    Java泛型機(jī)制必要性及原理解析

    這篇文章主要介紹了Java泛型機(jī)制必要性及原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 關(guān)于JFormDesigner的安裝及破姐超詳細(xì)教程

    關(guān)于JFormDesigner的安裝及破姐超詳細(xì)教程

    JFormDesigner是一種先進(jìn)的圖形用戶界面Swing?的設(shè)計(jì)工具(非開源),具有一個(gè)獨(dú)立的開發(fā)工具產(chǎn)品和基于不同開發(fā)工具如Eclipse、NetBeans等的開發(fā)插件,本文給大家介紹JFormDesigner安裝破解教程,感興趣的朋友一起看看吧
    2023-12-12
  • SpringSecurity授權(quán)機(jī)制的實(shí)現(xiàn)(AccessDecisionManager與投票決策)

    SpringSecurity授權(quán)機(jī)制的實(shí)現(xiàn)(AccessDecisionManager與投票決策)

    本文主要介紹了SpringSecurity授權(quán)機(jī)制的實(shí)現(xiàn),其核心是AccessDecisionManager和投票系統(tǒng),下面就來介紹一下,感興趣的可以了解一下
    2025-04-04
  • 使用SpringBoot與EasyExcel實(shí)現(xiàn)復(fù)雜的導(dǎo)入導(dǎo)出

    使用SpringBoot與EasyExcel實(shí)現(xiàn)復(fù)雜的導(dǎo)入導(dǎo)出

    這篇文章主要介紹了使用SpringBoot與EasyExcel實(shí)現(xiàn)復(fù)雜的導(dǎo)入導(dǎo)出,EasyExcel是一個(gè)快速解決大文件內(nèi)存溢出的Excel處理工具,它能讓你在不用考慮性能、內(nèi)存等因素的情況下,快速完成Excel的讀、寫等功能,需要的朋友可以參考下
    2023-10-10
  • Java聊天室之解決連接超時(shí)問題

    Java聊天室之解決連接超時(shí)問題

    這篇文章主要為大家詳細(xì)介紹了Java簡易聊天室之解決連接超時(shí)問題的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下
    2022-10-10
  • 基于Java回顧之JDBC的使用詳解

    基于Java回顧之JDBC的使用詳解

    本篇文章是對Java中JDBC的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • java堆排序原理與實(shí)現(xiàn)方法分析

    java堆排序原理與實(shí)現(xiàn)方法分析

    這篇文章主要介紹了java堆排序原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了java堆排序的相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12

最新評論