spring-retry重试框架

跟風遠走 提交于 2020-02-25 19:11:13

最近有个超时问题经常发生,运营商也无法解决,只能引入重试机制来实现了。本来想自己写个for觉得太low,找到有这么个框架也很简单。

1、添加pom引用

<!--重试框架引入jar包-->
<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
</dependency>

2、在springboot的启动类上添加启用重试机制的注解。

@EnableRetry

3、在需要重试的方法上添加重试注解。参数就不多做解释了,也比较简单,如果碰到难的在做笔记。

value:要拦截的异常类型    maxAttempts:最大重试次数    delay:延迟多少毫秒后重新执行    multiplier:指定延迟倍数,默认为0,表示固定暂停2秒后进行重试。

@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000, multiplier = 1))
private void test() {
    log.info("此方法有重试机制");
    //模拟出现异常
    int a = 1 / 0;
}

 

注意:

1、如果此方法(test)属于A类,那么就不能在A类的其他方法中调用此方法,否则重试机制无效。也就是不能在本类中调用。

2、重试机制,注意幂等性。

3、方法中不能将错误拦截,必须向上层抛出才行。

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!