@Slf4jclass diyRetryListener<Boolean> implements RetryListener {@Overridepublic <Boolean> void onRetry(Attempt<Boolean> attempt) {log.info("重试次数:{}",attempt.getAttemptNumber());log.info("距离第一次重试的延迟:{}",attempt.getDelaySinceFirstAttempt());if(attempt.hasException()){log.error("异常原因:",attempt.getExceptionCause());}else {System.out.println("正常处理结果:{}" + attempt.getResult());}}}定义监听器之后,需要在Retryer中进行注册 。
Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder().retryIfResult(Predicates.<Boolean>isNull()) // callable返回null时重试.retryIfExceptionOfType(IOException.class) // callable抛出IOException重试.retryIfRuntimeException() // callable抛出RuntimeException重试.withStopStrategy(StopStrategies.stopAfterAttempt(3)) // 重试3次后停止.withRetryListener(new DiyRetryListener<Boolean>()) // 注册监听器.build();小结Guava Retryer不光在重试策略上支持多种选择,并且将业务逻辑的处理放在Callable中,和重试处理逻辑分开,实现了解耦,这比小黑自己去写循环处理要优秀太多啦,Guava确实强大 。
推荐阅读
- 微软 Win11 资源管理器新特性:更轻松复制文件或文件夹路径
- 春季最适宜养肝的蔬果推荐 3个食谱轻松保护肝脏
- 阿里资深软件测试工程师总结的这几点,让小白轻松搞懂性能调优
- 如何轻松跑步呢?
- 复方醋酸氟轻松酊可怕,(复方醋酸氟轻松酊说明书(复方醋酸氟轻松酊多少钱
- 10分钟学会用Python轻松玩转Excel
- 最全面的Django静态文件教程,教你轻松加载图片
- 路由器经常断网是什么原因?教你3招,轻松解决
- 怎么在电脑上录制高清视频?轻松实现高清录制的教程分享
- HTML基础学习教程,轻松学会网页制作
