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

SpringBoot @Retryable注解使用

 更新時間:2024年12月10日 09:54:00   作者:LBL_lin  
SpringBoot提供的@Retryable注解可以方便地實現(xiàn)方法的重試機制,可以在不侵入原有邏輯代碼的方式下,優(yōu)雅地實現(xiàn)重處理功能

前言

在使用第三方接口的時候,一般都會有一些類似登錄客戶端的處理,或者發(fā)送消息這些場景,有時候會出現(xiàn)網(wǎng)絡抖動、連接超時等異常,這時候就需要進行多次重試。

一般如果我們自己實現(xiàn)重試機制,都是使用循環(huán),但是這樣并不優(yōu)雅。

在SpringBoot中已經(jīng)提供了實現(xiàn)重試機制的功能——@Retryable注解,可以在不侵入原有邏輯代碼的方式下,優(yōu)雅的實現(xiàn)重處理功能。

一、@Retryable是什么?

@Retryable是Spring提供的可重試注解,該注解一般用于方法上,實現(xiàn)方法的重試機制。

二、使用步驟

POM依賴

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

啟動@Retryable

在啟動類上加上@EnableRetry,開啟重試機制。

@EnableRetry
@SpringBootApplication
public class SpringBootRetryApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootRetryApplication.class, args);
    }
}

Service類

在需要重試方法上加上@Restryable

@Slf4j
@Service
public class LoginService {

    @Retryable(value = Exception.class, maxAttempts = 5, backoff = @Backoff(delay = 2000L, multiplier = 1))
    public void login(boolean isRetry) throws Exception {
        log.info("----------開始登錄----------");
        if (isRetry) {
            throw new Exception("重試登錄");
        }
    }
}

這里解釋一下@Retryable常用的幾個參數(shù)的含義:

  • value:拋出指定的異常才會重試
  • include:和value一樣,默認為空,當exclude也為空時,默認所有異常
  • exclude:指定不處理的異常
  • maxAttempts:最大重試次數(shù),默認是3次
  • backoff:重試等待策略,默認使用@Backoff,value為重試間隔,delay為重試之間的等待時間(毫秒為單位),multiplier指定延遲的倍數(shù)。

查看效果

可以看到,重試5次之后拋出異常,不再重試。

@Recover

當重試耗盡完后還是失敗,會出現(xiàn)什么情況?

RetryOperations可以將控制傳遞給另一個回調,即RecoveryCallback。Spring還提供了@Recover注解,用于@Retryable重試失敗后處理方法,此方法里的異常一定要是@Retryable方法里拋出的異常,否則不會回調這個方法。

    @Recover
    public void doRecover(Exception e) {
        log.info("----------重試失敗回調方法----------");
        log.info(e.getMessage());
    }

@Recover注解需要注意的點:

  1. 方法的返回值必須與@Retryable方法一致
  2. 方法的第一個參數(shù),必須是Throwable類型的,建議是與@Retryable配置的異常一致,其他的參數(shù),需要與@Retryable方法的參數(shù)一致。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 一篇文章帶你搞定JAVA內存泄漏

    一篇文章帶你搞定JAVA內存泄漏

    今天小編就為大家分享一篇關于Java內存泄漏問題處理方法經(jīng)驗總結,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-07-07
  • Java8新特性之默認方法(default)淺析

    Java8新特性之默認方法(default)淺析

    這篇文章主要介紹了Java8新特性之默認方法(default)淺析,默認方法也稱為虛擬擴展方法或防護方法,可以讓我們修改接口而不破壞原來的實現(xiàn)類的結構,需要的朋友可以參考下
    2014-06-06
  • spring boot結合Redis實現(xiàn)工具類的方法示例

    spring boot結合Redis實現(xiàn)工具類的方法示例

    這篇文章主要介紹了spring boot結合Redis實現(xiàn)工具類的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • java的正則表達式你知道多少

    java的正則表達式你知道多少

    這篇文章主要為大家詳細介紹了java的正則表達式,使用表格進行介紹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java面向對象之繼承的概念詳解

    Java面向對象之繼承的概念詳解

    這篇文章主要介紹了Java面向對象之繼承的概念詳解,Java是一種面向對象的編程語言,繼承是實現(xiàn)面向對象編程的基礎之一。通過繼承,我們可以使代碼更具可讀性、可重用性和可維護性,從而提高程序的效率和可靠性,需要的朋友可以參考下
    2023-04-04
  • Java使用觀察者模式實現(xiàn)氣象局高溫預警功能示例

    Java使用觀察者模式實現(xiàn)氣象局高溫預警功能示例

    這篇文章主要介紹了Java使用觀察者模式實現(xiàn)氣象局高溫預警功能,結合完整實例形式分析了java觀察者模式實現(xiàn)氣象局高溫預警的相關接口定義、使用、功能操作技巧,并總結了其設計原則與適用場合,具有一定參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • JAVA多線程編程實例詳解

    JAVA多線程編程實例詳解

    這篇文章主要介紹了JAVA多線程編程,結合實例形式總結分析了多線程、鎖、線程池等相關原理及使用技巧,需要的朋友可以參考下
    2019-09-09
  • Java實現(xiàn)簡單的彈球游戲

    Java實現(xiàn)簡單的彈球游戲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單的彈球游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 詳解SpringBoot 創(chuàng)建定時任務(配合數(shù)據(jù)庫動態(tài)執(zhí)行)

    詳解SpringBoot 創(chuàng)建定時任務(配合數(shù)據(jù)庫動態(tài)執(zhí)行)

    本篇文章主要介紹了SpringBoot 創(chuàng)建定時任務(配合數(shù)據(jù)庫動態(tài)執(zhí)行),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot+Mybatis-plus實現(xiàn)分頁查詢的示例代碼

    SpringBoot+Mybatis-plus實現(xiàn)分頁查詢的示例代碼

    本文主要介紹了SpringBoot+Mybatis-plus實現(xiàn)分頁查詢的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02

最新評論

建瓯市| 徐闻县| 扎鲁特旗| 图木舒克市| 达尔| 通许县| 屏东市| 洞口县| 元阳县| 新建县| 凭祥市| 牟定县| 资中县| 防城港市| 洞口县| 济宁市| 许昌市| 南城县| 英山县| 建瓯市| 屏东市| 蓬溪县| 商丘市| 抚顺市| 榆中县| 奉节县| 乳山市| 郎溪县| 突泉县| 乃东县| 翁源县| 外汇| 开江县| 上栗县| 宣威市| 永修县| 霍城县| 德保县| 任丘市| 信阳市| 册亨县|