前言
不知道大家平时在对数据进行同步传输,或者消息发送等操作由于网络波动的时候是如何操作的,记日志?邮件通知管理员?插入数据监控系统?但是如果仅仅是短暂的网络波动又迅速恢复那么又怎么做呢?循环调用吗?看起来就有点low了。
那么我们可以尝试一下@Retryable
常用参数介绍
- value 抛出指定异常才会重试,默认为空
- include 和value一样,默认为空,当exclude也为空时,默认所有异常
- exclude 指定不处理的异常
- maxAttempts 最大重试次数,默认3次
- backoff 重试等待策略,默认使用@Backoff,
- @Backoff value默认为1000L
- multiplier(指定延迟倍数)默认为0,表示固定暂停1秒后进行重试,如果把multiplier设置为1.5,则第一次重试为2秒,第二次为3秒,第三次为4.5秒。
依赖
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
用法
//一定要在类上加EnableRetry注解。也可以在启动类上面加注解
@Service
@EnableRetry
public class SVipServiceImpl implements SVipService {
@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5))
public double test() {}
}