news 2026/10/27 1:14:39

Fast-Retry 高性能百万级任务重试框架介绍及使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fast-Retry 高性能百万级任务重试框架介绍及使用

一、Fast-Retry

在本专栏的前面文章中我们介绍了Spring家族的 重试框架,本篇文章再给大家介绍一个高性能百万级任务重试框架Fast-Retry。它是一个高性能任务重试框架,可以支持百万级别任务的并发重试处理。与Spring-Retry不同,Fast-Retry支持异步任务的重试、超时等待、回调 等功能。

Fast-Retry使用起来也非常简单,可以基于FastRetryBuilder创建一个重试执行器。 也可以和Spring框架结合使用,官方提供了@FastRetry注解可以非常方便的集成到项目中。并且Fast-Retry也可以针对不同的异常或结果进行重试。

对比Spring-Retry和Guava-Retry,Fast-Retry有着绝对的性能优势:

GitHub项目地址:

https://github.com/burukeYou/fast-retry

二、Fast-Retry 实践

添加项目依赖:

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

2.1 基于 FastRetryBuilder 的重试

@Slf4j@SpringBootTestpublicclassRetryTest{privateFastRetryer<String>retryer=FastRetryBuilder.builder().attemptMaxTimes(3)// 重试测试.waitRetryTime(2,TimeUnit.SECONDS)// 重试等待时间.retryIfException(true)// 启用异常时重试.retryIfExceptionOfType(TimeoutException.class,RuntimeException.class)// 异常的类型.exceptionRecover(true).build();@Testpublicvoidtest1()throwsExecutionException,InterruptedException{CompletableFuture<String>future=retryer.submit(()->{log.info("开始执行: {}",LocalDateTime.now().toString());inti=1/0;return"success";});log.info("执行结果{}",future.get());}}

运行后可以看到重试日志:

2.2 基于 @FastRetry 注解的方式

基于注解的方式,和Spring-Retry一样,首先需要在配置类或启动类上增加@EnableFastRetry注解:

@EnableFastRetrypublicclassRetryDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(RetryDemoApplication.class,args);}}

创建测试Service,使用@FastRetry注解:

@Slf4j@ServicepublicclassTestService{@FastRetry(maxAttempts=3,retryWait=@RetryWait(delay=2))publicvoidtest(){log.info("开始执行: {}",LocalDateTime.now().toString());inti=1/0;log.info("执行结果succes");}}

测试调用:

@Slf4j@SpringBootTestpublicclassRetryTest{@ResourceTestServicetestService;@Testpublicvoidtest2(){testService.test();}}

同样可以看到重试日志:


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 1:13:24

Verilog基础:强度建模与net型信号的多驱动问题(三)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 四、一般情况下的net型信号的线与组合&#xff08;线网多驱动&#xff09; 在Verilog基础&#xff1a;强度建模与net型信号的多驱动问题&#xff08;二&#xff0…

作者头像 李华
网站建设 2026/10/27 1:12:45

【IC】【DE】数字IC基本设计流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 1:12:29

数字IC前端学习笔记:锁存器Latch的综合

相关文章 数字IC前端专栏https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 锁存器的生成方式有两种&#xff0c;一种是有意的&#xff0c;而另一种是无意的。无意生成的锁存器会浪费硅片面积&#xff0c;因为在大部分FPGA资源中&#x…

作者头像 李华
网站建设 2026/10/27 1:11:08

TD-LTE随机接入前导检测仿真:ZC序列与PRACH频域相关实现解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 1:10:45

硬件交付P1-2检查:从供电纹波到时序抖动的硬核验收指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华