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

 更新时间:2024年07月23日 09:25:27   作者:会飞的青蛙~  
为了防止网络抖动,影响我们核心接口或方法的成功率,通常我们会对核心方法进行失败重试,如果我们自己通过for循环实现,会使代码显得比较臃肿,所以本文给大家介绍了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接口进行失败重试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javabean和map相互转化方法代码示例

    Javabean和map相互转化方法代码示例

    这篇文章主要介绍了Javabean和map相互转化方法示例,介绍了其通用方法代码,需要的朋友可以参考下。
    2017-09-09
  • 用Java打印九九除法表代码分析

    用Java打印九九除法表代码分析

    这篇文章主要介绍了如何用Java语言打印九九除法表,包括其使用的源代码,需要的朋友可以参考下。
    2017-08-08
  • java后台启动jar包的一些命令汇总

    java后台启动jar包的一些命令汇总

    这篇文章主要介绍了java后台启动jar包的一些命令汇总,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-03-03
  • Java修改eclipse中web项目的server部署路径问题

    Java修改eclipse中web项目的server部署路径问题

    这篇文章主要介绍了Java修改eclipse中web项目的server部署路径,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 使用spring配置文件.xml的头文件

    使用spring配置文件.xml的头文件

    这篇文章主要介绍了使用spring配置文件.xml的头文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • java 获取request中的请求参数代码详解

    java 获取request中的请求参数代码详解

    这篇文章主要介绍了java 获取request中的请求参数的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • Java核心技术之反射

    Java核心技术之反射

    本文非常详细的讲解了java反射的相关资料,java反射在现今的使用中很频繁,希望此文可以帮大家解答疑惑,可以帮助大家理解
    2021-11-11
  • Java内存溢出场景及解决方案

    Java内存溢出场景及解决方案

    内存溢出是Java应用开发中常见的问题,但通过合理的代码优化、内存管理以及JVM参数调整,我们可以有效地避免和解决这类问题,这篇文章主要介绍了Java内存溢出场景及解决办法,需要的朋友可以参考下
    2024-04-04
  • Java字符流与字节流区别与用法分析

    Java字符流与字节流区别与用法分析

    这篇文章主要介绍了Java字符流与字节流区别与用法,较为详细的分析了java字符流与字节流的概念、功能与使用方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 浅谈Mybatis乐观锁插件

    浅谈Mybatis乐观锁插件

    这篇文章主要介绍了浅谈Mybatis乐观锁插件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12

最新评论