springboot +aop使用guavaretryer 的重试机制

简介: 1. 最近在公司在进行rpc 调用的时候,对方的服务不太稳定. 需求就是要间隔多长时间,多少次来重试。达到最大值之后就不在重试。
  1. 最近在公司在进行rpc 调用的时候,对方的服务不太稳定. 需求就是要间隔多长时间,多少次来重试。达到最大值之后就不在重试。
  2. 看了好多的资料,发现了一个开源的guavaretryer, 比较简单对用户非常的友好。
  3. 我们先新建一个springboot的项目,要引入guava-retry 的包,它会自动引入guava的包。


我们将其打开,看一下Retryer这个类


这里面是它的一些参数,具体的意思看注释就行了。
我们主要看一下call 方法


这里也就是表明返回的是两种值,一个是你自己自定义callable 返回 的值,一个是Throwable 的值。
下面还有一个监听器。


在下面就是在尝试,可以尝试就返回结果。不能尝试就走下面的是否应该停止,要是可以停止的话,就抛出retry 异常,
不可以的话就阻塞,就是组织结束尝试,要是保错的话,会对当前进程进行中断。

4,下面我们写一个自定义的注解加上aop 来 实现这个功能,
先写一个自定义注解

在写一个aop


这里retryer使用的是构建者模式,第一个的意思是如果返回值是null, 我们上面的cell()满足。 如果报错了返回值是null , 下面是异常类型,在注解里面声明了。在下面是否是运行是的异常。 下面就是重试的时间间隔和单位, 下面就是多少次之后就停止重试。

5 我们在写一个接口测试一下


先测试一下正常情况


没问题, 在测试一下异常情况,把刚才的注释放开
看一下控制台和浏览器


就是我们注解默认的重试三次,间隔三秒。这种异常的堆栈信息我是打印出来,其实可以用全局异常拦截的,在入库。
好了。
喜欢就点赞啊。

相关文章
|
1月前
|
Java 开发者 UED
Spring Boot的全局异常处理机制
【2月更文挑战第13天】
55 0
|
1月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
10天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
1月前
|
SQL NoSQL Java
【七】springboot整合AOP实现日志操作
【七】springboot整合AOP实现日志操作
41 0
|
2月前
|
Java 测试技术 开发者
探究 Spring Boot 的核心:IOC 和 AOP
Spring Boot 作为一种简化 Spring 应用开发的工具,继承了 Spring 框架的核心概念,其中最重要的是控制反转(IOC)和面向切面编程(AOP)。它们是 Spring 框架的基础,同时也深深植根于 Spring Boot 中。本文将讨论 IOC 和 AOP 的概念以及它们在 Spring Boot 中的应用。
59 4
|
2月前
|
设计模式 安全 Java
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
270 1
|
2月前
|
XML 缓存 Java
解锁Spring Boot AOP的魔力:优雅地管理交叉关注点
解锁Spring Boot AOP的魔力:优雅地管理交叉关注点
129 0
|
2月前
|
缓存 Java uml
SpringBoot2 | Spring AOP 原理深度源码分析(八)
SpringBoot2 | Spring AOP 原理深度源码分析(八)
45 0
|
10天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
18天前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
65 2