高性能任务重试框架Fast-Retry

Fast-Retry是一个高性能的异步重试框架,专为处理大规模并发任务而设计,能够支持百万级别任务的并发重试处理。与主流的同步重试框架(如Spring-Retry和Guava-Retry)相比,Fast-Retry提供了更灵活的异步支持,包括异步任务的重试、超时等待和回调机制,显著降低了对系统资源的占用,提高了系统整体性能和吞吐量。

开源地址:shanke/fast-retryicon-default.png?t=N7T8https://gitee.com/760374564/fast-retry

Fast-Retry的主要特点

  1. 高性能:Fast-Retry专为高并发场景设计,通过异步重试机制,在处理大量重试任务时能够保持高性能的并发处理能力。
  2. 灵活性:支持编程式和注解声明式等多种使用方式,用户可以根据实际需求选择合适的配置方式。
  3. 可定制性:支持自定义重试策略,包括重试次数、重试间隔、异常处理等,提供了强大的灵活性和扩展性。
  4. 易于集成:与Spring框架等主流开发框架无缝集成,官方提供了@FastRetry注解,方便用户快速集成到项目中。

Fast-Retry的使用方式

  1. 引入依赖:在项目中引入Fast-Retry的依赖,以便使用其提供的功能。
  2. 基于编程方式使用:通过FastRetryBuilder创建重试执行器,并配置重试策略,然后提交需要重试的任务。
  3. 基于注解方式使用:在方法上添加@FastRetry注解,并指定重试策略,Fast-Retry将自动对标记了注解的方法进行重试处理。

Fast-Retry的优势

  1. 异步处理:Fast-Retry采用异步重试机制,避免了同步重试时线程资源的浪费,提高了系统资源的利用率。
  2. 性能提升:在处理大规模并发任务时,Fast-Retry的性能明显优于同步重试框架,能够显著提升系统的吞吐量。
  3. 用户体验:通过自动重试机制,Fast-Retry能够确保业务连续性,减少因操作失败而导致的用户投诉和不满。

Fast-Retry的集成用法

》引入依赖

 <dependency>
        <groupId>io.github.burukeyou</groupId>
        <artifactId>fast-retry-all</artifactId>
        <version>0.2.0</version>
    </dependency>

》三种方式去构建我们的重试任务

//重试队列方式
        ExecutorService executorService = Executors.newFixedThreadPool(8);
        RetryQueue queue = new FastRetryQueue(executorService);
        RetryTask<String> task = new RetryTask<String>() {
            int result = 0 ;
            @Override
            public long waitRetryTime() {
                return 2000;
            }

            @Override
            public boolean retry() {
                return ++result < 5;
            }

            @Override
            public String getResult() {
                return  result + "";
            }
        };
        CompletableFuture<String> future = queue.submit(task);
        log.info("任务结束 结果:{}",future.get());
//builder方式
        RetryResultPolicy<String> resultPolicy = result -> result.equals("444");
        FastRetryer<String> retryer = FastRetryBuilder.<String>builder()
                .attemptMaxTimes(3)
                .waitRetryTime(3, TimeUnit.SECONDS)
                .retryIfException(true)
                .retryIfExceptionOfType(TimeoutException.class)
                .exceptionRecover(true)
                .resultPolicy(resultPolicy)
                .build();

        CompletableFuture<String> future = retryer.submit(() -> {
            log.info("重试");
            //throw new Exception("test");
            //int i = 1/0;
            if (0 < 10){
                throw new TimeoutException("test");
            }
            return "444";
        });

        String o = future.get();
        log.info("结果{}", o);
//注解方式
    @FastRetry(retryWait = @RetryWait(delay = 2))
    public String retryTask(){
        return "success";
    }

 

结论

Fast-Retry作为一款高性能的异步重试框架,为处理大规模并发任务提供了强大的支持。其灵活的异步机制和可定制的重试策略,使得在复杂分布式系统中实现高效、可靠的自动重试变得简单而直接。对于追求高性能和高可靠性的系统开发者来说,Fast-Retry无疑是一个值得深入探索的优秀选择。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易道合之逍遥峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值