0


实现重试只知道Spring Retry?试试Spring Boot 整合 Fast Retry 来实现重试机制

在这里插入图片描述

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

Spring Boot 整合 Fast Retry 来实现重试机制

前言

在外面日常开发中,服务之间的调用往往存在延迟和失败的情况。比如之前博主写的一篇【Spring Boot集成 Spring Retry 实现容错重试机制并附源码】
中提到的例如:

短信发送

远程服务调用

争抢锁

等场景,当正常调用发生异常时,例如:

网络延迟

服务宕机

临时故障

等问题。

为了提高服务的可靠性,我们可以使用重试机制来处理这些问题,之前我们已经介绍了

Spring Retry

,今天我们介绍另外一款轻量级的

Fast Retry

库。


什么是 Fast Retry?

Fast Retry

是一个轻量级的 Java 重试库,它可以方便地为方法调用添加重试机制。它支持自定义重试策略和异常处理,能够提高服务的容错能力,主要它支持百万级任务的异步重试~

Fast Retry 和 Spring Retry怎么选?

Fast Retry

是一款轻量级、高性能的重试工具,适合简单场景和高性能需求的项目;而

Spring Retry

则提供了更多的功能和灵活性,尤其是在与

Spring

生态集成时具备更强的优势。

在一些简单的项目中,

Spring Retry

作为

Spring

的家族成员,博主还是比较推荐选用,但是针对一些高并发、高性能需求的情况下,我们就需要借助

Fast Retry

了,因为它支持百万级任务的异步重试!

本文主要介绍快速整合Fast Retry,一些高并发的业务场景后续博主再写一篇展开详解;或者小伙伴有其它想了解的也可以评论留言~


实战开始

❶ 初始化项目

构建你的 Spring Boot 项目,在pom.xml中引入依赖

<dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Fast Retry --><dependency><groupId>com.github.kristofa</groupId><artifactId>fast-retry</artifactId><version>2.0.0</version></dependency></dependencies>

❷ 编写一个简单的重试逻辑

创建一个简单的服务,该服务将在调用失败时重试。我们将使用

@Retryable

注解来实现重试功能。

importcom.github.kristofa.retry.Retryer;importorg.springframework.stereotype.Service;importorg.springframework.retry.annotation.Backoff;importorg.springframework.retry.annotation.EnableRetry;importorg.springframework.retry.annotation.Retryable;@Service@EnableRetrypublicclassUserService{@Retryable(
        value ={RuntimeException.class},
        maxAttempts =5,
        backoff =@Backoff(delay =2000))publicStringgetUserData(String userId){// 模拟一个随机失败的请求if(Math.random()>0.5){thrownewRuntimeException("无法获取用户数据...请重试");}return"获取到用户数据: "+ userId;}}

❸ 控制器实现

现在我们实现一个UserController控制器来调用上面的 UserService重试服务

importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassUserController{privatefinalUserService userService;publicUserController(UserService userService){this.userService = userService;}@GetMapping("/user/{id}")publicStringgetUser(@PathVariableString id){return userService.getUserData(id);}}

❹ 测试重试机制

现在,启动应用并测试重试机制。通过浏览器或 Postman 访问

http://localhost:8080/user/{id}

,多次请求将会展示重试的效果。


结语

通过整合

Fast Retry

,我们成功地在

Spring Boot

应用中实现了简单的重试机制。你可以根据业务需求调整重试次数和延迟时间,以便更好地处理服务间的失败和延迟问题。

如果本文对您有所帮助,希望 一键三连 给博主一点点鼓励,如果您有任何疑问或建议,请随时留言讨论!

至于Spring Retry的详解,可以参考博主写的【Spring Boot集成 Spring Retry 实现容错重试机制并附源码】


在这里插入图片描述


本文转载自: https://blog.csdn.net/lhmyy521125/article/details/143217243
版权归原作者 Micro麦可乐 所有, 如有侵权,请联系我们删除。

“实现重试只知道Spring Retry?试试Spring Boot 整合 Fast Retry 来实现重试机制”的评论:

还没有评论