如何使用SpringBoot的注解完成接口的重试机制

我们在项目开发中,有些是需要保持事务一致性的业务场景,在接口请求时因为网络等原因导致的访问中断后该如何补偿处理呢?我们这里可以使用springBoot的@Retryable注解来实现重试机制。原理是在请求接口处理业务时抛出指定的异常后,方法会被重新执行。

第一步:需要添加依赖(我这里使用的是gradle引包)

在这里插入图片描述
maven的pom引包参考下面的
在这里插入图片描述

第二步:启动类添加应用Retryable的注解@EnableRetry

在这里插入图片描述

第三步:在需要重试的方法上加@Retryable注解

在这里插入图片描述
当重试结束后,RetryOperations可以将控制传递给另一个回调,即RecoveryCallback。Spring-Retry还提供了@Recover注解,用于@Retryable重试失败后处理方法。
在这里插入图片描述
@Recover注解是重试失败后调用的方法(需要和重重试处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常一致,否则无法识别,可以在该方法中进行日志处理。

@Retryable参数说明

  • value:触发重试需要抛出指定异常
  • exclude:指定可以忽略的异常,发生此异常不触发重试
  • maxAttempts:最大重试次数
  • backoff:重试等待策略,默认使用​​@Backoff​​,​​@Backoff​​的value值为等待多久重试,默认为1000L;multiplier(指定延迟倍数)默认为0,表示固定暂停1秒后进行重试,multiplier设置为几,则标识下一次重试时间是上一次的几倍。

注意
1、使用@Retryable需要在方法上抛出异常,如果使用try catch处理异常,处理后最后必须抛出异常,不然不会触发重试。
2、@Retryable是基于AOP实现,所以不支持@Retryable的方法在当前类里自调用,需要在其他类中代理此类,使用@Autowired注入或者@Bean这样就可以生效。
3、@Recover方法的返回值必须与@Retryable方法一致

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值