首页 > 其他分享 >Guava Retry重试机制

Guava Retry重试机制

时间:2022-09-19 10:36:20浏览次数:45  
标签:Retry attempt System 重试 println message Guava out

1、添加pom依赖

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

2、Guava Retry具体使用

public void guavaRetry(String param) {
Retryer<Boolean> retry = RetryerBuilder.<Boolean>newBuilder()
.retryIfResult(Predicates.equalTo(false))//设置根据结果重试
.retryIfException()//设置异常重试源
.withWaitStrategy(WaitStrategies.fixedWait(1, TimeUnit.SECONDS))//设置等待间隔时间(失败后,将等待固定的时长进行重试)
.withStopStrategy(StopStrategies.stopAfterAttempt(5))// 重试停止策略:设置最大重试次数
.withRetryListener(new RetryListener() {
@Override
public <V> void onRetry(Attempt<V> attempt) {
System.out.println("准备开始第几次重试:"+attempt.getAttemptNumber());
System.out.println("是异常导致的重试还是正常返回:"+attempt.hasException());
System.out.println("如果是异常导致的重试,那么获取具体具体的异常类型:"+attempt.getExceptionCause());
}
})
.build();
AtomicReference<String> message = new AtomicReference<>("");
try {
retry.call(()->{
System.out.println("尝试");
String method = this.method();//该方法出现异常后,后面代码不会继续执行
if (!"成功".equals(method)) {
message.set("失败");
}else {
message.set("");
}
return true;
});
} catch (Exception e) {
message.set("失败");//整个尝试失败
e.printStackTrace();
}finally {
//尝试一定次数后的最终处理
System.out.println(message.get()+"++++++++++");
}
}

搜索

复制

标签:Retry,attempt,System,重试,println,message,Guava,out
From: https://www.cnblogs.com/myself1012/p/16706851.html

相关文章

  • @Retryable注解的使用
    @Retryable前言在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败。调用远程服务失败。争抢锁失败。 这些错误可能是因为网络波动造成的,等待过后重处理......
  • 重试与风险 了解
    转自:https://juejin.cn/post/7085140011985109029,https://www.51cto.com/article/708109.htmlhttps://www.infoq.cn/article/5fboevkal0gvgvgeac4z1.为何重试微服务节点......
  • Guava中这些Map的骚操作,让我的代码量减少了50%
    Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合、缓存、并发、I/O等多个方面。使用这些API一方面可以简化我们代码,使代码更为优雅,另一方面它补......
  • rabbitmq消费(失败)重试3次(多次)
    方案一:spring提供的retry配置文件:server:port:8080spring:rabbitmq:host:xxx.xxx.xxx.xxxport:5672username:xxxxpassword:xxxpub......
  • Retrying task after failure: Waiting for lock. org.apache.iceberg.hive.HiveTable
    执行spark任务居然碰到了hive中表的被锁了,导致写数据时失败,这个还真是头一次碰到过这回事。错误信息如下:22/09/0421:02:28WARNTasks:Retryingtaskafterfailure:W......
  • 除了Guava,Java开发者还值得了解的5个谷歌类库
    Guava是谷歌基于Java1.6的一个类库集合的扩展项目,包含了许多谷歌核心的Java常用库。除开Guava,还有一些谷歌的常用Java类库也值得我们关注,本文列出了其中的五个类库......
  • 【快应用】快应用打开提示,无法打开,请稍后重试
    ​问题背景:快应用打开提示,无法打开,请稍后重试​ 原因分析:此问题通常是由于发布的rpk包签名出现变动导致的或者是快应用分包加载时首页是在分包里导致的。 解决方法:......
  • 用例失败重试
    下载源码,url: https://github.com/GoverSky/HTMLTestRunner_cn/blob/master/README.mdverbosity=2为信息输出控制台的展示方式retry:用例执行失败后指定重试次数save_......
  • virtualservice超时重试
    [root@k8s-master09-http-retry]#kubectlapply-f./[root@k8s-master09-http-retry]#catvirtualservice-demoapp.yamlapiVersion:networking.istio.io/v1beta1......
  • Guava常用工具类总结
    Guava常用工具类总结-"我想写得更优雅,可是没人告诉我怎么写得更优雅"-"Null的含糊语义让人很不舒服。Null很少可以明确地表示某种语义,例如,Map.get(key)返回Null时,可能表......