日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java基于Guava Retrying實現重試功能

瀏覽:15日期:2022-08-29 16:49:36

在接口調用中由于各種原因,可能會重置失敗的任務,使用Guava-Retrying可以方便的實現重試功能。

首先,需要引用Guava-Retrying的包

<dependency> <groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId> <version>2.0.0</version></dependency>

代碼示例:

import com.github.rholder.retry.Retryer;import com.github.rholder.retry.RetryerBuilder;import com.github.rholder.retry.StopStrategies;import com.google.common.base.Predicates;import java.util.concurrent.TimeUnit;import static com.github.rholder.retry.WaitStrategies.incrementingWait;/** * @author wangxuexing * @descrption * @date */public class RetryDemo { public static void main(String[] args) { Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder(). //如果異常會重試 retryIfException(). //如果結果為false會重試 retryIfResult(Predicates.equalTo(false)). //重調策略 withWaitStrategy(incrementingWait(30, TimeUnit.SECONDS, 30, TimeUnit.SECONDS)). //嘗試次數 withStopStrategy(StopStrategies.stopAfterAttempt(3)). //注冊監聽 withRetryListener(new MyRetryListener()).build(); try { retryer.call(new TaskCallable()); } catch (Exception e) { e.printStackTrace(); } }}

其中TaskCallable是任務的具體實現類,它實現了Callable接口

import java.util.concurrent.Callable;/** * @author wangxuexing * @descrption * @date */public class TaskCallable implements Callable<Boolean> { public Boolean call() throws Exception { return false; }}

另外,MyRetryListener監聽實現了RetryListener接口,每次重試都會回調注冊的監聽

import com.github.rholder.retry.Attempt;import com.github.rholder.retry.RetryListener;/** * @author wangxuexing * @descrption * @date */public class MyRetryListener implements RetryListener { public <V> void onRetry(Attempt<V> attempt) { System.out.print('[retry]time=' + attempt.getAttemptNumber()); // 距離第一次重試的延遲 System.out.print(',delay=' + attempt.getDelaySinceFirstAttempt()); // 重試結果: 是異常終止, 還是正常返回 System.out.print(',hasException=' + attempt.hasException()); System.out.print(',hasResult=' + attempt.hasResult()); // 是什么原因導致異常 if (attempt.hasException()) { System.out.print(',causeBy=' + attempt.getExceptionCause().toString()); } else {// 正常返回時的結果 System.out.print(',result=' + attempt.getResult()); } System.out.println(); }}

執行一下main方法,可以看到執行的結果:

[retry]time=1,delay=0,hasException=false,hasResult=true,result=false[retry]time=2,delay=30000,hasException=false,hasResult=true,result=false[retry]time=3,delay=90000,hasException=false,hasResult=true,result=falsecom.github.rholder.retry.RetryException: Retrying failed to complete successfully after 3 attempts.at com.github.rholder.retry.Retryer.call(Retryer.java:174)at test.retryer.RetryDemo.main(RetryDemo.java:32)

下面詳細分析一下:

RetryerBuilder是一個factory創建者,可以定制設置重試源且可以支持多個重試源,可以配置重試次數或重試超時時間,以及可以配置等待時間間隔,創建重試者Retryer實例。

RetryerBuilder的重試源支持Exception異常對象 和自定義斷言對象,通過retryIfException 和retryIfResult設置,同時支持多個且能兼容。 retryIfException,拋出runtime異常、checked異常時都會重試,但是拋出error不會重試。 retryIfRuntimeException只會在拋runtime異常的時候才重試,checked異常和error都不重試。 retryIfExceptionOfType允許我們只在發生特定異常的時候才重試,比如NullPointerException和IllegalStateException都屬于runtime異常,也包括自定義的error retryIfResult可以指定你的Callable方法在返回值的時候進行重試

StopStrategy:停止重試策略,提供三種:

StopAfterDelayStrategy 設定一個最長允許的執行時間;比如設定最長執行10s,無論任務執行次數,只要重試的時候超出了最長時間,則任務終止,并返回重試異常RetryException。

NeverStopStrategy 不停止,用于需要一直輪訓知道返回期望結果的情況。

StopAfterAttemptStrategy 設定最大重試次數,如果超出最大重試次數則停止重試,并返回重試異常。

WaitStrategy:等待時長策略(控制時間間隔),返回結果為下次執行時長: FixedWaitStrategy 固定等待時長策略。 RandomWaitStrategy 隨機等待時長策略(可以提供一個最小和最大時長,等待時長為其區間隨機值)。 IncrementingWaitStrategy 遞增等待時長策略(提供一個初始值和步長,等待時間隨重試次數增加而增加)。 ExponentialWaitStrategy 指數等待時長策略。 FibonacciWaitStrategy Fibonacci 等待時長策略。 ExceptionWaitStrategy 異常時長等待策略。 CompositeWaitStrategy 復合時長等待策略。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
首页国产精品| 精品精品国产三级a∨在线| 日韩在线成人| 欧美午夜精品一区二区三区电影| 国产精品片aa在线观看| 日韩有吗在线观看| 亚洲不卡av不卡一区二区| 欧美一区免费| 亚洲一级少妇| 免费在线亚洲| 国产乱码精品一区二区三区四区 | 黄色网一区二区| 偷拍亚洲精品| 三级亚洲高清视频| 亚洲激情中文| 亚洲成人精选| 在线日韩欧美| 久久精品欧美一区| 久久精品影视| 久久九九电影| 激情丁香综合| 色老板在线视频一区二区| 中文字幕高清在线播放| 色乱码一区二区三区网站| 九九久久国产| 国产成人调教视频在线观看| 国产suv精品一区二区四区视频| 久久亚洲资源中文字| 精品一区二区三区在线观看视频 | 三上悠亚国产精品一区二区三区 | 蜜桃av一区二区三区电影| 合欧美一区二区三区| 久久精品青草| 亚洲午夜一级| 99re国产精品| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲成人一区| 欧美日韩精品一本二本三本| 先锋影音国产一区| 蜜臀av国产精品久久久久| 国产亚洲高清视频| 日韩中文欧美在线| 婷婷精品在线| 国产精品一区二区精品视频观看| 久久亚州av| 裤袜国产欧美精品一区| 蜜桃视频在线网站| 欧美日韩激情| 亚洲一区欧美| 日韩一区二区三区精品| 欧美一区二区三区久久精品| 国产乱论精品| 国产一区二区三区国产精品| 亚洲啊v在线| 五月婷婷亚洲| 蜜臀久久99精品久久久画质超高清| 日韩av不卡一区二区| 精品视频在线一区二区在线| 日本综合字幕| 麻豆91精品| 久久国产尿小便嘘嘘| 精品久久不卡| 久久九九99| 亚洲精品少妇| 国产精品网站在线看| 国产日韩电影| 六月婷婷一区| 在线观看视频免费一区二区三区| 蜜桃一区二区三区在线观看| 中文在线日韩| 国产精品videossex久久发布 | 国产精品a久久久久| 免费高潮视频95在线观看网站| 亚洲天堂久久| 日韩精品乱码av一区二区| 成人污污视频| 久久国产成人| 日本 国产 欧美色综合| 亚洲三级精品| 国产精品啊啊啊| 欧美+日本+国产+在线a∨观看| 亚洲香蕉视频| 日韩a一区二区| 日韩精品一卡二卡三卡四卡无卡| 国产精品久久久久久妇女| 99精品在线免费在线观看| 亚洲一区二区小说| 精品国产麻豆| 日韩在线一区二区| 成人在线视频中文字幕| 亚洲在线电影| 成人国产精品久久| 午夜国产精品视频免费体验区| 日本99精品| 亚洲综合电影| 中文字幕一区二区三区四区久久| 成人国产精品一区二区网站| 一本一道久久a久久| 亚洲爱爱视频| 国产精品一级| 亚洲在线免费| 午夜av不卡| 国产伦精品一区二区三区千人斩 | 日韩一区电影| 国产亚洲字幕| 九色porny丨国产首页在线| 亚洲毛片视频| 久久久久久美女精品| 蜜桃精品视频| 亚洲精品少妇| 在线成人直播| 亚洲啊v在线| 欧美国产日韩电影| 亚洲综合色婷婷在线观看| 婷婷成人综合| 黄色在线网站噜噜噜| 青青伊人久久| 久热精品在线| 岛国精品一区| 国产精品一二| 日本va欧美va瓶| 男人天堂欧美日韩| 久久中文视频| 中文在线免费视频| 国产精品大片| 日韩精品国产精品| 午夜一级在线看亚洲| 欧美13videosex性极品| 精品丝袜久久| 久久99精品久久久久久园产越南 | 日本一二区不卡| 你懂的国产精品永久在线| 日本在线不卡视频| 免费高清在线一区| 影院欧美亚洲| 久久亚洲精品中文字幕蜜潮电影| 久久精品国产成人一区二区三区| 日本亚洲三级在线| 国产一级久久| 不卡一区2区| 狠狠躁少妇一区二区三区| 国产美女久久| 亚洲精品亚洲人成在线观看| 日韩在线一二三区| 九色精品91| 国产字幕视频一区二区| 麻豆视频在线看| 国产一区二区久久久久| 精品欧美视频| 麻豆国产精品777777在线| 国产精品久久免费视频| 日韩不卡免费视频| 91精品丝袜国产高跟在线| 亚洲午夜视频| 在线国产一区二区| 蜜桃视频一区二区三区| 国产欧美日韩综合一区在线播放| 福利一区和二区| 在线亚洲免费| 欧美久久精品| 精品一区二区三区中文字幕视频| 91精品xxx在线观看| 美女国产一区| 久久99免费视频| 国产在线日韩| 亚洲bt欧美bt精品777| 欧美国产中文高清| 欧美va天堂在线| 欧美中文高清| 日韩一区二区三区免费| 美国三级日本三级久久99| 精品淫伦v久久水蜜桃| 怡红院精品视频在线观看极品| 欧美日韩午夜| 91精品国产成人观看| 久久国产66| 久久一区国产| 国产精品美女| 精品99在线| 日韩中文字幕一区二区三区| 久久精品国产免费| 中文一区在线| 精品视频高潮| 日韩在线播放一区二区| 国内精品麻豆美女在线播放视频| 日韩视频不卡| 精品国产一级| 午夜在线视频一区二区区别 | 国产另类在线| 一级欧洲+日本+国产| 欧美国产专区| 免费中文字幕日韩欧美| 高清一区二区| 亚洲精品在线国产| 成人免费网站www网站高清| 日韩1区2区日韩1区2区| 精品一区三区| 鲁大师精品99久久久| 一区二区亚洲视频| 欧美gv在线|