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

SpringBoot使用spring retry重試機制的操作詳解

 更新時間:2024年12月31日 10:19:55   作者:Harry技術  
實際工作中由于網(wǎng)絡波動等原因導致代碼執(zhí)行失敗需要重新執(zhí)行,保證最終能夠完成業(yè)務功能,通常來說,會用try/catch,while循環(huán)或者定時任務重處理,但是這樣的做法缺乏統(tǒng)一性,要多寫很多代碼,spring-retry組件可以通過注解優(yōu)雅的實現(xiàn)重處理功能

重試在功能設計上需要根據(jù)應用場景進行設計,讀數(shù)據(jù)的接口比較適合重試的場景,寫數(shù)據(jù)的接口就需要注意接口的冪等性了,還有就是重試次數(shù)如果太多的話會導致請求量加倍,給后端造成更大的壓力,設置合理的重試機制是關鍵;

Spring Retry重試框架

Spring boot使用spring retry重試機制

1.pom引用

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

2.應用啟動類開啟retry

@EnableRetry
public class Application {
    .......
}

3.在指定方法上標記@Retryable來開啟重試

@Retryable(value={RuntimeException.class},maxAttempts=5,backoff = @Backoff(delay = 2000,multiplier = 1.5))
public void retryTest() throws Exception {
    System.out.println(Thread.currentThread().getName()+" do something...");
    throw new RuntimeException();
}

value: 指定發(fā)生的異常進行重試

include: 和value一樣,默認空,當exclude也為空時,所有異常都重試

exclude: 指定異常不重試,默認空,當include也為空時,所有異常都重試

maxAttemps: 重試次數(shù),默認3

backoff: 重試補償機制,默認沒有

4.在指定方法上標記@Recover來開啟重試失敗后調用的方法(注意,需跟重處理方法在同一個類中)

@Recover
 public void recover(RuntimeException e) {
   // ... do something
 }

使用詳解
spring-retry通過AOP實現(xiàn)對目的方法的封裝,執(zhí)行在當前線程下,所以重試過程中當前線程會堵塞。如果BackOff時間設置比較長,最好起異步線程重試(也可以加@Async注解)。

@Retryable注解

被注解的方法發(fā)生異常時會重試

value:指定發(fā)生的異常進行重試

include:和value一樣,默認空,當exclude也為空時,所有異常都重試

exclude:指定異常不重試,默認空,當include也為空時,所有異常都重試

maxAttemps:重試次數(shù),默認3

backoff:重試補償機制,默認沒有

@Backoff注解
delay:指定延遲后重試

multiplier:指定延遲的倍數(shù),比如delay=5000l,multiplier=2時,第一次重試為5秒后,第二次為10秒,第三次為20秒

@Recover
當重試到達指定次數(shù)時,被注解的方法將被回調,可以在該方法中進行日志處理。需要注意的是發(fā)生的異常和入?yún)㈩愋鸵恢聲r才會回調

spring-retry踩坑

一、@Retryable未生效可能原因

@Retryable方法必須為 public

下面情況下@Retryable不生效,即重試方法與調用它的非重試方法在同一個類中。

// 注意 此方法不生效!?。?
@EnableRetry(proxyTargetClass = true)
class test{
	public void methodA(){
		methodB();
	}
  @Retryable
  public void methodB(){
  
  }
}

解決方案:將重試方法單獨寫了一個Service。

3.每個類中對一種異常只有一個重試方法。兩個重試方法捕捉Exception,重試失效。

二、@Recover未生效可能原因

①返回值必須和被重試的函數(shù)返回值一致;
②參數(shù)中除了第一個是觸發(fā)的異常外,后面的參數(shù)需要和被重試函數(shù)的參數(shù)列表一致;
③當然這里的返回值部分也可以再做一次手動重試,但是已經嘗試那么多次都失敗了,所以在兜底函數(shù)中再做一次也意義不大。因此我的考慮是,這里就用來做日志記錄就好。

以上就是SpringBoot使用spring retry重試機制的操作詳解的詳細內容,更多關于SpringBoot使用spring retry的資料請關注腳本之家其它相關文章!

相關文章

  • Java如何獲取靜態(tài)資源文件路徑

    Java如何獲取靜態(tài)資源文件路徑

    這篇文章主要介紹了Java如何獲取靜態(tài)資源文件路徑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Spring實現(xiàn)定時任務的兩種方法詳解

    Spring實現(xiàn)定時任務的兩種方法詳解

    Spring提供了兩種方式實現(xiàn)定時任務,一種是注解,還有一種就是接口了,這篇文章主要為大家介紹了這兩種方法的具體實現(xiàn)方法,需要的可以參考下
    2024-12-12
  • 關于@PostConstruct、afterPropertiesSet和init-method的執(zhí)行順序

    關于@PostConstruct、afterPropertiesSet和init-method的執(zhí)行順序

    這篇文章主要介紹了關于@PostConstruct、afterPropertiesSet和init-method的執(zhí)行順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 修改maven項目端口號的方法

    修改maven項目端口號的方法

    今天小編就為大家分享一篇修改maven項目端口號的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 基于Java的正則表達式

    基于Java的正則表達式

    正則表達式,又稱正規(guī)表示法、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念
    2017-05-05
  • Springboot中使用Redis實現(xiàn)分布式鎖的示例代碼

    Springboot中使用Redis實現(xiàn)分布式鎖的示例代碼

    在分布式系統(tǒng)中,為了保證數(shù)據(jù)的一致性和任務的互斥執(zhí)行,分布式鎖是一種常見的解決方案,本文主要介紹了Springboot中使用Redis實現(xiàn)分布式鎖的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • mac安裝配置jdk環(huán)境變量

    mac安裝配置jdk環(huán)境變量

    這篇文章主要為大家介紹了mac安裝配置jdk環(huán)境變量實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn)示例詳解

    MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn)示例詳解

    這篇文章主要介紹了MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn),我們可以將XML中重復出現(xiàn)的內容提取出來放到sql標簽中,當需要用到sql標簽中的內容時,用include標簽將sql標簽中的內容引進來即可,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • SpringMVC整合websocket實現(xiàn)消息推送及觸發(fā)功能

    SpringMVC整合websocket實現(xiàn)消息推送及觸發(fā)功能

    這篇文章主要為大家詳細介紹了SpringMVC整合websocket實現(xiàn)消息推送及觸發(fā)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 老生常談Java網(wǎng)絡編程TCP通信(必看篇)

    老生常談Java網(wǎng)絡編程TCP通信(必看篇)

    下面小編就為大家?guī)硪黄仙U凧ava網(wǎng)絡編程TCP通信(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論