0
点赞
收藏
分享

微信扫一扫

Springboot重试之 Retry方法

孟祥忠诗歌 2022-02-28 阅读 74

第一步、引入maven依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.8.6</version>
</dependency>

第二步、在service添加@Retryable注解

@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 1000L, multiplier = 2))

标注此注解的方法在发生异常时会进行重试

序号属性类型默认值说明
1interceptorString””将 interceptor 的 bean 名称应用到 retryable()
2valueclass[]{}可重试的异常类型
3includeclass[]{}和value一样,默认空,当exclude也为空时,所有异常都重试
4excludeclass[]{}指定异常不重试,默认空,当include也为空时,所有异常都重试 
5labelString””统计报告的唯一标签。如果没有提供,调用者可以选择忽略它,或者提供默认值。
6maxAttemptsint3尝试的最大次数(包括第一次失败),默认为3次。
7backoff@Backoff@Backoff()重试补偿机制,指定用于重试此操作的backoff属性。默认为空

@Backoff

不设置参数时,默认使用FixedBackOffPolicy(指定等待时间),重试等待1000ms

序号属性类型默认值说明
1delaylong0指定延迟后重试 ,如果不设置则默认使用 1000 milliseconds
2maxDelaylong0最大重试等待时间
3multiplierlong0指定延迟的倍数,比如delay=5000l,multiplier=2时,第一次重试为5秒后,第二次为10秒,第三次为20秒(大于0生效)
4randombooleanfalse随机重试等待时间

3、在启动类增加@EnableRetry注解

@EnableRetry
public class WebApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }

}
举报

相关推荐

0 条评论