国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了SpringBoot如何優(yōu)雅的實現(xiàn)重試功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用背景

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

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);
}

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

spring-retry介紹

spring系列的spring-retry是另一個實用程序模塊,
可以幫助我們以標(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

啟動上增加注解@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:拋出指定異常才會重試
include:和value一樣,默認為空,當(dāng)exclude也為空時,默認所有異常
exclude:指定不處理的異常
maxAttempts:最大重試次數(shù),默認5次
backoff:重試等待策略,默認使用@Backoff,@Backoff的value默認為1000L,我們設(shè)置為2000L;multiplier(指定延遲倍數(shù))默認為0,表示固定暫停1秒后進行重試,如果把multiplier設(shè)置為1.5,則第一次重試為2秒,第二次為3秒,第三次為4.5秒。文章來源地址http://www.zghlxwxcb.cn/news/detail-481995.html

到了這里,關(guān)于SpringBoot如何優(yōu)雅的實現(xiàn)重試功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot如何優(yōu)雅的實現(xiàn)異步調(diào)用?

    Spring Boot 提供了多種方式來實現(xiàn)異步任務(wù),這里介紹三種主要實現(xiàn)方式。 Spring Boot 提供了多種方式來實現(xiàn)異步任務(wù),這里介紹三種實現(xiàn)方式。 @Async 注解是 Spring 提供的一種輕量級異步方法實現(xiàn)方式,它可以標(biāo)記在方法上,用來告訴 Spring 這個方法是一個異步方法,Spring 會將

    2024年02月07日
    瀏覽(16)
  • 【SpringBoot系列】如何優(yōu)雅地實現(xiàn)異步調(diào)用

    【SpringBoot系列】如何優(yōu)雅地實現(xiàn)異步調(diào)用

    1.前言 在現(xiàn)代的應(yīng)用程序開發(fā)中,異步調(diào)用是提高系統(tǒng)性能和響應(yīng)能力的重要手段之一。 Spring Boot作為一個快速開發(fā)框架,提供了多種方式來實現(xiàn)異步調(diào)用,使得開發(fā)者能夠更加優(yōu)雅地處理并發(fā)和異步任務(wù)。 本文將介紹如何在Spring Boot中實現(xiàn)異步調(diào)用的方法和技巧,幫助開發(fā)

    2024年02月07日
    瀏覽(25)
  • SpringBoot項目如何優(yōu)雅的實現(xiàn)操作日志記錄

    SpringBoot項目如何優(yōu)雅的實現(xiàn)操作日志記錄

    在實際開發(fā)當(dāng)中,對于某些關(guān)鍵業(yè)務(wù),我們通常需要記錄該操作的內(nèi)容,一個操作調(diào)一次記錄方法,每次還得去收集參數(shù)等等,會造成大量代碼重復(fù)。 我們希望代碼中只有業(yè)務(wù)相關(guān)的操作,在項目中使用注解來完成此項功能。 通常就是使用Spring中的AOP特性來實現(xiàn)的,那么在

    2024年01月18日
    瀏覽(24)
  • 使用SpringBoot優(yōu)雅的實現(xiàn)文件上傳

    使用SpringBoot優(yōu)雅的實現(xiàn)文件上傳

    文件上傳,也稱為upload,是指將本地圖片、視頻、音頻等文件上傳到服務(wù)器上,可以供其他用戶瀏覽或下載的過程。文件上傳在項目中應(yīng)用非常廣泛,我們經(jīng)常發(fā)微博、發(fā)微信朋友圈都用到了文件上傳功能。 服務(wù)端要接收客戶端頁面上傳的文件,通常都會使用Apache的兩個組件

    2024年02月11日
    瀏覽(26)
  • 如何使用SpringBoot和Netty實現(xiàn)一個WebSocket服務(wù)器,并配合Vue前端實現(xiàn)聊天功能?

    本文將詳細介紹如何使用SpringBoot和Netty實現(xiàn)一個WebSocket服務(wù)器,并配合Vue前端實現(xiàn)聊天功能。 WebSocket是一種基于TCP的協(xié)議,它允許客戶端和服務(wù)器之間進行雙向通信,而不需要像HTTP那樣進行請求和響應(yīng)。Netty是一個Java網(wǎng)絡(luò)編程框架,它提供了強大的異步事件驅(qū)動網(wǎng)絡(luò)編程能

    2024年02月16日
    瀏覽(26)
  • springboot3使用自定義注解+AOP+redis優(yōu)雅實現(xiàn)防重復(fù)提交

    springboot3使用自定義注解+AOP+redis優(yōu)雅實現(xiàn)防重復(fù)提交

    ? ??個人主頁:? ? ?蒾酒 ?? 系列專欄 :《spring boot實戰(zhàn)》 ?? 山高路遠,行路漫漫,終有歸途 目錄 寫在前面 實現(xiàn)思路 實現(xiàn)步驟 1.定義防重復(fù)提交注解 2.編寫一個切面去發(fā)現(xiàn)該注解然后執(zhí)行防重復(fù)提交邏輯 3.測試 依賴條件 1.接口上標(biāo)記防重復(fù)提交注解 2.接口測試 寫在最

    2024年04月11日
    瀏覽(23)
  • 【SpringBoot】springboot使用RestTemplate 進行http請求失敗自動重試

    【SpringBoot】springboot使用RestTemplate 進行http請求失敗自動重試

    我們的服務(wù)需要調(diào)用別人的接口,由于對方的接口服務(wù)不是很穩(wěn)定,經(jīng)常超時,于是需要增加一套重試邏輯。這里使用 Spring Retry 的方式來實現(xiàn)。 一、引入POM 二、 修改啟動類 在Spring Boot 應(yīng)用入口啟動類,也就是配置類的上面加上 @EnableRetry 注解,表示讓重試機制生效。 注意

    2024年02月08日
    瀏覽(19)
  • springboot項目如何優(yōu)雅停機

    springboot項目如何優(yōu)雅停機

    相信很多同學(xué)都會用Kill -9 PID來殺死進程,如果用在我們微服務(wù)項目里面,突然殺死進程會有什么后果?有沒有其他的方式優(yōu)雅的停機呢?今天,我們就來討論下kill -9 pid 這個命令對微服務(wù)項目的影響,以及如何優(yōu)雅的停機的問題。 kill -9 屬于暴利刪除,直接殺死進程。對于

    2024年02月04日
    瀏覽(26)
  • SpringBoot如何優(yōu)雅接收前端請求參數(shù)

    @RequestParm 我們可以通過 @RequestParm 注解去綁定請求中的參數(shù),將(查詢參數(shù)或者form表單數(shù)據(jù))綁定到controller的方法參數(shù)中,通俗點說就是,我們可以在get請求和post請求中使用改注解,get請求中會從查詢參數(shù)中獲取參數(shù),post請求會從form表單或者查詢參數(shù)中獲取參數(shù) 默認情況

    2024年02月11日
    瀏覽(18)
  • springboot如何優(yōu)雅的獲取前端參數(shù)

    springboot如何優(yōu)雅的獲取前端參數(shù)

    對于初學(xué)者來說,困難的不是理論知識,而是如何在程序中具體實現(xiàn)。 現(xiàn)在的項目基本上都是前后端分離的項目,如何打通前后端,接收前端傳過來的參數(shù)呢? 廢話不多說,這篇文章就來說一說接收前端參數(shù)的具體操作 1.1 核心代碼 1.2 測試結(jié)果 在訪問“http://localhost:8080/a

    2024年03月17日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包