Spring Retry实现重试操作
dependency
1 | <dependency> |
注解
在启动入口加入重试配置
1 | @EnableRetry |
使用
1 | @Retryable(value = Exception.class, maxAttempts = 3,backoff = @Backoff(delay = 2000, multiplier = 1.5)) |
参考
- @EnableRetry 能否重试
- @Retryable 标注此注解的方法在发生异常时会进行重试
- value:指定处理的异常类
- include:指定处理的异常类和value一样,默认为空,当exclude也为空时,默认所有异常
- exclude:指定异常不处理,默认空,当include也为空时,默认所有异常
- maxAttempts:最大重试次数。默认3次
- backoff: 重试等待策略。默认使用@Backoff注解
- @Backoff 重试等待策略
- 不设置参数时,默认使用FixedBackOffPolicy(指定等待时间),重试等待1000ms
- 设置delay,使用FixedBackOffPolicy(指定等待时间),重试等待填写的时间
- 设置delay和maxDealy时,重试等待在这两个值之间均态分布
- 设置delay、maxDealy、multiplier,使用 ExponentialBackOffPolicy(指数级重试间隔的实现 ),multiplier即指定延迟倍数,比如delay=5000l,multiplier=2,则第一次重试为5秒,第二次为10秒,第三次为20秒……
- @Recover 用于@Retryable重试失败后处理方法,此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。