type
status
date
slug
summary
tags
category
icon
password
背景
在日常的开发中,有些场景,我们需要重试某个方法。比如当进行网络调用时,由于网络波动导致无法访问,需要重试几次。
github
使用方式
Spring-Boot
1.引入依赖
2.启动文件引入@EnableRetry标签,比如
3.需要重试的方法中,增加@Retryable标签,比如
此处博主为了方便计数,增加了一个自定义的传输类RetryTransferDto,类的具体内容如下
4.如果在最后一次重试报错后,想进入特定方法执行某些操作(比如写日志等),可以使用@Recover标签,例如
5.日志输出如下所示
注意事项
1.因为Spring-Retry原理是切面操作,所以pom依赖中也需要有aop的依赖
2.因为是切面操作,所以待重试方法,不能是当前类中调用的方法。打个比方,A类中有方法a和方法b,方法a调用方法b时,在方法b上增加重试机制,此重试方法失效。
3.标签中maxAttempts、delay、multiplier等参数,需要是常量。如果想动态从yml或者properties的配置文件中获取,请使用对应的Expression参数。比如
我的测试代码
码云: