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

spring?retry方法調(diào)用失敗重試機制示例解析

 更新時間:2022年03月05日 16:26:38   作者:kl  
這篇文章主要為大家介紹了spring?retry方法調(diào)用失敗重試機制的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

前言

很多場景會用到重試的機制,比如:rpc服務(wù)調(diào)用失敗重試,文件上傳oss失敗重試,http接口調(diào)用失敗重試,支付回調(diào)失敗重試等等,一切因為網(wǎng)絡(luò),非邏輯性錯誤等不確定因素引起的失敗都可以加上重試的機制,來增強系統(tǒng)的健壯性,博主也處理過文件上傳到第三方oss服務(wù)失敗增加重試的事例,在這之前不知道spring有個spring-retry項目,所以采用的是限制次數(shù)的遞歸調(diào)用的方式來解決的。

現(xiàn)在我們來看看spring boot項目中怎么使用spring-retry來處理是失敗重試的問題。

1.導(dǎo)入依賴

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

ps:不要遺漏spring-boot-starter-aop包

2.注解的使用

/**
     * @Retryable注解參數(shù)說明
     * maxAttempts 重試的次數(shù)
     * value 指定異常重試
     * exclude 排除某個異常不重試
     * 
     * @Backoff注解參數(shù)說明
     * backoff 重試的間隔時間
     */
    @Retryable(maxAttempts=9,exclude = ArrayIndexOutOfBoundsException.class,value=Exception.class,backoff=@Backoff(delay = 1000))
    public String getResult(String name){
        System.out.println("嘗試調(diào)用第"+i+++"次");
        name= name.split(",")[1111];//異常測試
        if(i!=8){
            name= name.split(",")[1111];//異常測試
        }
        return name+":你好!";
    }

3.開啟重試

@SpringBootApplication
@EnableRetry
public class BootRetryApplication {
	public static void main(String[] args) {
		SpringApplication.run(BootRetryApplication.class, args);
	}
}

ps:別忘了@EnableRetry注解開啟重試

github項目地址:https://github.com/spring-projects/spring-retry

補充,手動聲明式重試:

public static void main(String[] args) {
        ProxyFactory factory = new ProxyFactory(HelloService.class.getClassLoader());
        factory.setInterfaces(HelloService.class);
        factory.setTarget(new HelloService() {
            @Override
            public String say() {
                System.err.println("hello");
                if(1==1) throw new SecurityException();
                return "a";
            }
        });
        HelloService service = (HelloService) factory.getProxy();
        JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();
        pointcut.setPatterns(".*say.*");
        RetryOperationsInterceptor interceptor = new RetryOperationsInterceptor();
        ((Advised) service).addAdvisor(new DefaultPointcutAdvisor(pointcut, interceptor));
        service.say();
    }

以上就是spring retry方法調(diào)用失敗重試機制示例解析的詳細內(nèi)容,更多關(guān)于spring retry方法調(diào)用失敗重試機制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于spring 方法級緩存的多種實現(xiàn)

    基于spring 方法級緩存的多種實現(xiàn)

    下面小編就為大家?guī)硪黄趕pring 方法級緩存的多種實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java中的this指針使用方法分享

    Java中的this指針使用方法分享

    我知道很多朋友都和我一樣:在JAVA程序中似乎經(jīng)常見到“this”,自己也偶爾用到它,但是到底“this”該怎么用,卻心中無數(shù)!很多人一提起它,就說“當前對象”,可到底什么是當前對象,是什么當前對象,他自己也不清楚。
    2014-06-06
  • Spring Boot 整合mybatis 與 swagger2

    Spring Boot 整合mybatis 與 swagger2

    之前使用springMVC+spring+mybatis,總是被一些繁瑣的xml配置,還經(jīng)常出錯,下面把以前的一些ssm項目改成了spring boot + mybatis,相對于來說優(yōu)點太明顯了,具體內(nèi)容詳情大家通過本文學(xué)習吧
    2017-08-08
  • Java System類用法實戰(zhàn)案例

    Java System類用法實戰(zhàn)案例

    這篇文章主要介紹了Java System類用法,結(jié)合具體實例形式分析了java使用System類獲取系統(tǒng)環(huán)境變量信息相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Java Class 加密工具 ClassFinal詳解

    Java Class 加密工具 ClassFinal詳解

    ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包或war包,無需修改任何項目代碼,兼容spring-framework;可避免源碼泄漏或字節(jié)碼被反編譯,這篇文章主要介紹了Java Class 加密工具 ClassFinal,需要的朋友可以參考下
    2023-03-03
  • Java?SpringBoot?@Async實現(xiàn)異步任務(wù)的流程分析

    Java?SpringBoot?@Async實現(xiàn)異步任務(wù)的流程分析

    這篇文章主要介紹了Java?SpringBoot?@Async實現(xiàn)異步任務(wù),主要包括@Async?異步任務(wù)-無返回值,@Async?異步任務(wù)-有返回值,@Async?+?自定義線程池的操作代碼,需要的朋友可以參考下
    2022-12-12
  • java關(guān)鍵字super的騷操作詳解

    java關(guān)鍵字super的騷操作詳解

    關(guān)鍵字super在Java中用于引用當前類的父類(即超類)的構(gòu)造方法、訪問父類的成員變量和方法,它提供了一種方便的方式來處理繼承關(guān)系中的父類操作,下面我們就來看看它有哪些騷操作吧
    2023-09-09
  • Java中字符編碼格式詳解

    Java中字符編碼格式詳解

    在java應(yīng)用軟件中,會有多處涉及到字符集編碼,有些地方需要進行正確的設(shè)置,有些地方需要進行一定程度的處理。本文主要給大家講解java中字符的編碼格式等相關(guān)問題
    2016-03-03
  • java數(shù)組元素的引用實例講解

    java數(shù)組元素的引用實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java數(shù)組元素的引用實例講解內(nèi)容,有需要的朋友們可以學(xué)習參考下。
    2021-03-03
  • Java?Float?保留小數(shù)位精度的實現(xiàn)

    Java?Float?保留小數(shù)位精度的實現(xiàn)

    這篇文章主要介紹了Java?Float?保留小數(shù)位精度的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論