使用场景:有些业务有调用失败的情况,可以 设置多次重试,当重试达到一定次数后取消重试。
使用步骤:
1、首先要添加依赖
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
</dependency>
spring-retry依赖到了aspectjweaver,不添加会报错
2、在应用配置类上添加 @EnableRetry 以打开Spring Retry的自动配置;
···
@Configuration
@EnableRetry
public class Application {
@Bean
public Service service() {
return new Service();
}
}
···
3、在业务中使用
@Retryable(RemoteAccessException.class)
public void service() {
log.info("调用服务");
throw new RemoteAccessException("调用失败");
}
@Recover
public void recover(RemoteAccessException e) {
// ... panic
log.info("全部调用失败,不再重试-->" + e.getMessage());
}
调用服务,当抛出定义的异常RemoteAccessException时,进行重试,默认重试3次(可配置),当重试3次后还失败则调用recover方法。
网友评论