1.概述
在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。
2.使用Retry
引入依赖
<!--引入重试机制-->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
启动类开始retry重试机制
使用 重试机制,在service层添加新接口实现重试代码
@Override
@Retryable(value = {BusinessException.class},backoff = @Backoff(delay = 5000,multiplier = 2))
public AyUser findByNameAndPasswordRetry(String name, String password) {
System.out.println("主动扔出异常,测试重试机制");
throw new BusinessException();
}
测试,将会重试三次,控制台打印三次"主动扔出异常,测试重试机制"。因为@retryable中有maxAttempts属性 (最大重试次数),默认是3(次)