spring的重试机制无效@Retryable@EnableRetry

来源:互联网 发布:复杂网络的研究方向 编辑:程序博客网 时间:2024/06/06 15:35

spring-retry模块支持方法和类、接口、枚举级别的重试

方式很简单,引入pom包

<parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>lastest</version></parent><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry --><dependency>    <groupId>org.springframework.retry</groupId>    <artifactId>spring-retry</artifactId>    <version>1.1.2.RELEASE</version></dependency><dependency>    <groupId>org.aspectj</groupId>    <artifactId>aspectjweaver</artifactId>    <version>1.8.6</version></dependency>

然后在@Configuration注解的类中添加@EnableRetry
最后在想要重试的方法上添加@Retryable(Exception.class)
由于retry用到了aspect增强,所有会有aspect的坑,就是方法内部调用,会使aspect增强失效,那么retry当然也会失效。

例如

public class demo {    public void A() {        B();    }    @Retryable(Exception.class)    public void B() {        throw new RuntimeException("retry...");    }}

这种情况B()不会重试。

原创粉丝点击