什么时候需要用到重试?
- 在实际中,有一些场景比如,通讯失败、获取锁失败、网络波动等原因造成程序异常,但是在重处理之后会成功。
以下是基于Spring Boot中的配置进行编写。
开发步骤
一、在启动类上(Application)添加@EnableRetry注解
二、在需要重试方法上添加@Retryable注解
@Retryable(value = { DataNotFoundException.class }, maxAttempts = 4, backoff = @Backoff(delay = 3000L, multiplier = 1))
public void testRetry() {
System.out.println("retry start");
throw new DataNotFoundException();
}
- value 指定失败重试的异常类型
- include:和value一样,默认空,当exclude也为空时,所有异常都重试
- exclude:指定异常不重试,默认空,当include也为空时,所有异常都重试
- maxAttempts: 重试次数,默认是3
- backoff:重试补偿机制,默认没有
@Backoff
- delay:指定延迟后重试
- multiplier:指定延迟的倍数,比如delay=5000l,multiplier=2时,第一次重试为5秒后,第 二次为10秒,第三次为20秒
三、在重试回调方法上添加@Recover注解
- 重试次数达到指定次数会执行此方法,此方法一般用做日志记录或者异