当前位置: 代码网 > it编程>编程语言>Java > SpringBoot接口或方法进行失败重试的实现方式

SpringBoot接口或方法进行失败重试的实现方式

2024年07月23日 Java 我要评论
1. 前言为了防止网络抖动,影响我们核心接口或方法的成功率,通常我们会对核心方法进行失败重试,如果我们自己通过for循环实现,会使代码显得比较臃肿2. springboot提供了比较优雅的实现方式第一

1. 前言

为了防止网络抖动,影响我们核心接口或方法的成功率,通常我们会对核心方法进行失败重试,如果我们自己通过for循环实现,会使代码显得比较臃肿

2. springboot提供了比较优雅的实现方式

第一步:pom中引入spring-retry 因为retry是基于aop实现的 所以这里还需要引入spring aop

<dependency>
    <groupid>org.springframework.retry</groupid>
    <artifactid>spring-retry</artifactid>
</dependency>
<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-aop</artifactid>
</dependency>

第二步:启动类上开启spiring-retry模块

第三步:在需要失败重试方法上加@retryable注解

参数

value:可以设置对哪些异常进行失败重试
maxattempts:设置失败重试的次数
backoff:设置重试等待策略
delay:失败重试时间间隔
multiplier:设置延迟倍数

例如:我们delay设置的是1000 multipler设置的是2当出现异常时,会间隔1秒,2秒,4秒进行重试

第四步:当重试次数耗尽还抛出异常时,我们可以通过@recover注解进行失败回调

拿到我们的异常值和方法的入参进行额外的处理,

第五步:我们可以看到,重复调用了五次,最后进入了我们的失败调用方法中

注意:

  1. @recover方法的返回值,必须与@retryable方法的返回值一致
  2. @recover方法的第一个参数必须是throwable类型的
  3. 回调方法与重试方法需要在同一个实现类里面
  4. 如果同一个类有多个回调方法,我们可以通过@retryable注解的recover属性,指定回调方法名称
  5. spring-retry是基于aop实现的,静态方法会导致aop失效 更多aop的失效场景请看下期

到此这篇关于springboot接口或方法进行失败重试的实现方式的文章就介绍到这了,更多相关springboot接口进行失败重试内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com