以往我们在进行网络请求的时候,需要考虑网络异常的情况,本文就介绍了利用spring-retry,是spring提供的一个重试框架,原本自己实现的重试机制,现在spring帮封装好提供更加好的编码体验。
2 使用步骤 2.1 引入maven库代码如下(示例):
2.2 在spring启动类上开启重试功能 2.3 公共业务代码 2.4 传统的重试做法 2.5 使用spring-retry的命令式编码 2.5.1 定义重试监听器 2.5.2 定义重试配置 2.5.3 命令式编码 2.6使用spring-retry的注解式编码 3 SpringBoot整合spring-retry我们使用SpringBoot来整合spring-retry组件实现重试机制。
3.1 添加@EnableRetry注解在主启动类Application上添加@EnableRetry注解,实现对重试机制的支持
注意:@EnableRetry也可以使用在配置类、ServiceImpl类、方法上
3.2 接口实现注意:接口类一定不能少,在接口类中定义你需要实现重试的方法,否则可能会无法实现重试功能
我的测试接口类如下:
3.3 添加@Retryable注解我们针对需要实现重试的方法上添加@Retryable注解,使该方法可以实现重试,这里我列出ServiceImpl中的一个方法:
说明:@Retryable配置元数据情况:value :针对指定抛出的异常类型,进行重试,这里指定的是ExceptionmaxAttempts :配置最大重试次数,这里配置为3次(包含第一次和最后一次)delay: 第一次重试延迟间隔,这里配置的是2smultiplier :每次重试时间间隔是前一次几倍,这里是1.5倍
3.4 Controller测试代码 3.5 发送请求发送请求后,我们发现后台打印情况,确实重试了3次,并且在最后一次重试失败的情况下,才抛出异常,具体如下(可以注意下时间间隔)
3.6 补充:@Recover一般情况下,我们重试最大设置的次数后,仍然失败抛出异常,我们会通过全局异常处理类进行统一处理,但是我们其实也可以自行处理,可以通过@Recover注解来实现,具体如下:
注意:1)@Recover的方法中的参数异常类型需要与重试方法中一致2)该方法的返回值类型与重试方法保持一致
再次测试如下(发现不会再抛出异常)
到此这篇关于spring retry实现方法请求重试的文章就介绍到这了,更多相关spring retry方法请求重试内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!