Spring中的重试机制Retry的注意事项

一 简单使用

1. 导入依赖

<!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
    <version>1.2.5.RELEASE</version>
</dependency>

目前最稳定最新的版本为1.2.5, 如果这个地方父工程为spring-boot-starter-parent,可不必导入这个依赖,

由于spring-retry是基于AOP实现的,所以还需要导入

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
</dependency>

2. 启动类配置

添加注解@EnableRetry

 或:

 3. 在需要重试的方法上添加@@Retryable

4. @Recover 

当重试到达指定次数时,被注解的方法将被回调,可以在该方法中进行日志处理。需要注意的是发生的异常和入参类型一致时才会回调。

需要注意的地方:

1. 需要重试的方法与@Recover的返回类型必须保持一致,否则无法重试,比如需要重试的方法返回参数为Map类型,回调的方法为void,重试机制将失效,

2. 注解@Recover方法必须与被重试的方法在一个类中,言外之意,一个service中如果有多个重试方法,但是@Recover方法只有一个有效

3. 避免在重试方法中进行数据库add操作,可以在@Backoff中排除异常,如果遇到异常,将会重复插入好几遍

原文地址:https://www.cnblogs.com/LiuFqiang/p/15176950.html