首页 > 其他分享 >Guava Retryer(重试组件)

Guava Retryer(重试组件)

时间:2023-12-11 17:31:47浏览次数:28  
标签:重试 google guava Retryer length msg Guava com

pom.xml

<dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.github.rholder</groupId>
            <artifactId>guava-retrying</artifactId>
            <version>2.0.0</version>
            <!-- 排除与guava重复的依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.code.findbugs</groupId>
                    <artifactId>jsr305</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

code

public static void main(String[] args) {
        String msg = "aaabbb";
        Callable<Integer> task = new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                System.out.println("length:".concat(msg.length() + ""));
                return msg.length();
            }
        };
        //返回异常或返回6或返回null,都会触发重试机制。最多执行4次(首次 + 重试3次),每次延迟5s。
        Retryer<Integer> retryer = RetryerBuilder.<Integer>newBuilder()
                .retryIfResult(Predicates.<Integer>isNull())
                .retryIfResult(Predicates.equalTo(6))
                .retryIfExceptionOfType(Exception.class)
                .withStopStrategy(StopStrategies.stopAfterAttempt(4))
                .withWaitStrategy(WaitStrategies.fixedWait(5*1000, TimeUnit.MILLISECONDS))
                .build();
        try {
            retryer.call(task);
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (RetryException e) {
            log.error("重试3次依旧未能获得期望值");
//            e.printStackTrace();
        }
    }


标签:重试,google,guava,Retryer,length,msg,Guava,com
From: https://blog.51cto.com/u_16203447/8776205

相关文章

  • 优雅提效:Guava的字符串处理工具
    第1章:引言大家好,我是小黑,今天咱们要聊一聊GoogleGuava这个超棒的Java库,尤其是它的字符串处理工具。对于Java程序员来说,字符串处理是日常工作的一部分,而Guava在这方面提供了非常强大的支持。使用Guava处理字符串不仅可以提高效率,而且代码会更简洁、更优雅。Guava库由Google开发......
  • Guava本地环境设置
    Guava本地环境设置这部分指导如何下载和设置Java在机器上。请按照以下步骤来设置环境。JavaSE免费提供链接:下载Java。所以,根据操作系统下载对应版本。按照说明下载java和运行.exe在机器上,并按说明安装Java。一旦机器上安装了Java,还需要设置环境变量指向正确的JAVA安装目录:Wi......
  • 并发设计类分析(Guava/Netty)
    1.限流器1.1限流器常见限流算法:计数器算法计数器算法是一种简单的限流方法,通过对请求进行计数,当请求达到一定的阈值时,进行限制。这种方法适用于简单场景,但不够灵活。容易出现临界时间点限流失效问题。滑动窗口算法滑动窗口算法维护一个时间窗口内的请求数量,通过动态调......
  • Guava中的函数式编程
    第1章:引言大家好!今天小黑要和咱们聊聊,在Java中使用Guava来进行函数式编程。首先,让我们来聊聊什么是函数式编程。简单来说,函数式编程是一种编程范式,它将计算视为函数的评估,避免使用程序状态和可变数据。在函数式编程中,函数是“一等公民”,意味着它们可以像任何其他数据一样被传递......
  • Guava Preconditions类的各种用法
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。GuavaPreconditions类提供静态方法列表,用于检查是否使用有效参数值调用方法或构造函数。如果前提条件失败,则会抛出指定的异常。前置依赖引入pom<dependency><groupId>com.google.guava</g......
  • 深入探讨Guava的缓存机制
    第1章:引言大家好,我是小黑,今天咱们聊聊GoogleGuava的缓存机制。缓存在现代编程中的作用非常大,它能提高应用性能,减少数据库压力,简直就是性能优化的利器。而Guava提供的缓存功能,不仅强大而且使用起来非常灵活。在咱们深入挖掘之前,先简单说说缓存。缓存,其实就是一种保存数据的手段......
  • 使用 Guava Retry 优雅的实现重试机制
    王有志,一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群:共同富裕的Java人大家好,我是王有志。今天我会通过一个真实的项目改造案例和大家聊一聊如何优雅的实现Java中常用的的重试机制。业务背景在我们的系统中当客户完成支付后,保单管理系统会通过MQ推送出一条包......
  • RabbitMQ 消费者可靠性——失败重试机制
     效果:消费者抛异常后,会本地重试,如果本地重试次数达到最大重试次数之后,直接给队列返回reject,队列收到后就会丢弃该消息,也就是策略的第一种但就这样把删了不太好,所以有了失败消息处理策略  第二种ImmediateRequeueMessageRecoverer:消费者抛异常后,会本地重试,如果本地重试......
  • 连接huggingface.co报错:(MaxRetryError("SOCKSHTTPSConnectionPool(host='huggingface
    参考:https://blog.csdn.net/shizheng_Li/article/details/132942548https://blog.csdn.net/weixin_42209440/article/details/129999962  ============================  随着国际顶级的AI公司广泛使用huggingface.co,现在的huggingface.co已经成了搞AI的不可或缺的一......
  • 为什么要用Redis做缓存?为什么用Redis而不用map和Guava?
    从请求数据的性能和并发角度来回答这两个问题,假如用户是第一次访问数据库中的某些数据,第一次访问当然会比较慢,因为是直接从硬盘上读取的,数据通过磁盘IO从磁盘上来到内存中,然后通过网络通信传输给用户,假如我们在第一次读取数据时,将数据存储到内存中,然后第二次以后都从内存中直接读......