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

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.導入依賴

<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)文章

最新評論

彭州市| 长垣县| 府谷县| 墨竹工卡县| 尼勒克县| 成安县| 吐鲁番市| 中西区| 海原县| 公安县| 孙吴县| 榆林市| 绥芬河市| 宜春市| 昌都县| 新巴尔虎左旗| 谷城县| 盐津县| 柳河县| 乐清市| 铁力市| 长春市| 东阳市| 通州市| 崇文区| 游戏| 宁南县| 禹城市| 淮安市| 库尔勒市| 天全县| 界首市| 什邡市| 乌兰浩特市| 巴彦淖尔市| 长治市| 什邡市| 曲周县| 潍坊市| 若羌县| 贺兰县|