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

SpringBoot整合Retry實(shí)現(xiàn)錯(cuò)誤重試過(guò)程逐步介紹

 更新時(shí)間:2023年02月27日 11:24:29   作者:彭世瑜  
重試的使用場(chǎng)景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時(shí),由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時(shí),此時(shí)可以多重試幾次。用定時(shí)任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個(gè)注解搞定所有,感興趣的可以了解一下

引入依賴

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

完整依賴pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- spring-retry -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

開啟spring-retry

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

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.retry.annotation.EnableRetry;
@EnableRetry
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

使用重試注解

@Retryable注解

  • value,可重試的異常類型。含義同include。默認(rèn)為空(如果excludes也為空,則重試所有異常)
  • include:可重試的異常類型。默認(rèn)為空(如果excludes也為空,則重試所有異常)
  • exclude:無(wú)需重試的異常類型。默認(rèn)為空(如果includes也為空,則重試所有異常)
  • maxAttempts:最大重試次數(shù)(包括第一次失敗),默認(rèn)為3次
  • backoff:重試等待策略,下面會(huì)在@Backoff中介紹
  • recover:表示重試次數(shù)到達(dá)最大重試次數(shù)后的回調(diào)方法

@Backoff注解

  • delay,重試之間的等待時(shí)間(以毫秒為單位)
  • maxDelay,重試之間的最大等待時(shí)間(以毫秒為單位)
  • multiplier,指定延遲的倍數(shù)
  • delayExpression,重試之間的等待時(shí)間表達(dá)式
  • maxDelayExpression,重試之間的最大等待時(shí)間表達(dá)式
  • multiplierExpression,指定延遲的倍數(shù)表達(dá)式
  • random,隨機(jī)指定延遲時(shí)間

使用示例

package com.example.demo.component;
import org.springframework.retry.annotation.Recover;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Component;
@Component
public class HttpRequest {
    private int count = 0;
    /**
     * 模擬網(wǎng)絡(luò)請(qǐng)求異常
     * @return
     */
    @Retryable(recover = "errorHandler")
    public String getResponse() {
        count++;
        System.out.println("time: " + count);
        if (count < 4) {
            throw new RuntimeException("count: " + count);
        }
        return "success";
    }
    /**
     * 錯(cuò)誤處理函數(shù)
     * 注意:需要返回 String,否則會(huì)拋出方法找不到異常
     * org.springframework.retry.ExhaustedRetryException: Cannot locate recovery method
     *
     * @param e
     * @return
     */
    @Recover
    public String errorHandler(RuntimeException e) {
        System.out.println("errorHandler");
        return "ok";
    }
}

測(cè)試

package com.example.demo.component;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class HttpRequestTest {
    @Autowired
    private HttpRequest httpRequest;
    @Test
    public void getResponse(){
        httpRequest.getResponse();
    }
}

輸出結(jié)果

time: 1
time: 2
time: 3
errorHandler

參考

SpringBoot 中使用 spring-retry 輕松解決重試

到此這篇關(guān)于SpringBoot整合Retry實(shí)現(xiàn)錯(cuò)誤重試過(guò)程逐步介紹的文章就介紹到這了,更多相關(guān)SpringBoot Retry錯(cuò)誤重試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過(guò)簡(jiǎn)單步驟實(shí)現(xiàn)SpringMVC文件上傳

    通過(guò)簡(jiǎn)單步驟實(shí)現(xiàn)SpringMVC文件上傳

    這篇文章主要介紹了通過(guò)簡(jiǎn)單步驟實(shí)現(xiàn)SpringMVC文件上傳,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 解讀Spring接口方法加@Transactional失效的原因

    解讀Spring接口方法加@Transactional失效的原因

    這篇文章主要介紹了Spring接口方法加@Transactional失效的原因解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 前后端項(xiàng)目分離解決cors錯(cuò)誤的方法詳解

    前后端項(xiàng)目分離解決cors錯(cuò)誤的方法詳解

    隨著前后端分離技術(shù)的越來(lái)越盛行,跨域問(wèn)題也逐漸凸顯了出來(lái),下面這篇文章主要給大家介紹了關(guān)于前后端項(xiàng)目分離解決cors錯(cuò)誤的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • SpringBoot2.0集成Swagger2訪問(wèn)404的解決操作

    SpringBoot2.0集成Swagger2訪問(wèn)404的解決操作

    這篇文章主要介紹了SpringBoot2.0集成Swagger2訪問(wèn)404的解決操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 舉例說(shuō)明Java中代碼塊的執(zhí)行順序

    舉例說(shuō)明Java中代碼塊的執(zhí)行順序

    這篇文章主要介紹了舉例說(shuō)明Java中代碼塊的執(zhí)行順序,包括靜態(tài)屬性和非靜態(tài)屬性以及構(gòu)造函數(shù)等相關(guān)的執(zhí)行先后,需要的朋友可以參考下
    2015-07-07
  • 詳解SpringBoot啟動(dòng)項(xiàng)目后執(zhí)行方法的幾種方式

    詳解SpringBoot啟動(dòng)項(xiàng)目后執(zhí)行方法的幾種方式

    在項(xiàng)目開發(fā)中某些場(chǎng)景必須要用到啟動(dòng)項(xiàng)目后立即執(zhí)行方式的功能,本文主要聊聊實(shí)現(xiàn)立即執(zhí)行的幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • jmeter斷言的三種實(shí)現(xiàn)方式

    jmeter斷言的三種實(shí)現(xiàn)方式

    在使用Jmeter進(jìn)行性能測(cè)試或者接口自動(dòng)化測(cè)試工作中,經(jīng)常會(huì)用到的一個(gè)功能,就是斷言,本文主要介紹了jmeter斷言的三種實(shí)現(xiàn)方式,
    2024-01-01
  • 詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    這篇文章主要介紹了詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 淺談spring boot使用thymeleaf版本的問(wèn)題

    淺談spring boot使用thymeleaf版本的問(wèn)題

    這篇文章主要介紹了spring boot使用thymeleaf版本的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java IO流 文件的編碼實(shí)例代碼

    Java IO流 文件的編碼實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了java io流文件編碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-05-05

最新評(píng)論