例:这个表达式的意思就是 , 如果 testRetry05 方法出现异常 会调用 retryService.isRetry() 方法 , 根据返回结果判断是否重试
- @Recover兜底方法
@Retryable(value = https://www.isolves.com/it/cxkf/kj/2023-05-18/MyException.class)public void testRetry06() throws MyException {System.out.println("测试兜底方法");throw new MyException("出现了异常");}@Recoverpublic void recover06(MyException e) {System.out.println("兜底方法开启,异常信息:" + e.getMessage());}
熔断模式@CircuitBreaker指在具体的重试机制下失败后打开断路器 , 过了一段时间 , 断路器进入半开状态 , 允许一个进入重试 , 若失败再次进入断路器 , 成功则关闭断路器 , 注解为 @CircuitBreaker ,具体包括熔断打开时间、重置过期时间@CircuitBreaker(openTimeout = 1000, resetTimeout = 3000, value = https://www.isolves.com/it/cxkf/kj/2023-05-18/MyException.class)public void testRetry07() throws MyException {System.out.println("测试CircuitBreaker注解");throw new MyException("出现了异常");}
例:openTimeout 时间范围内失败 maxAttempts 次数后 , 熔断打开 resetTimeout 时长 这个方法的意思就是方法在一秒内失败三次时 , 触发熔断 , 下次在有请求过来时 , 直接进入重试策略
- SimpleRetryPolicy 默认最多重试 3 次
- TimeoutRetryPolicy 默认在 1 秒内失败都会重试
- ExpressionRetryPolicy 符合表达式就会重试
- CircuitBreakerRetryPolicy 增加了熔断的机制 , 如果不在熔断状态 , 则允许重试
- CompositeRetryPolicy 可以组合多个重试策略
- NeverRetryPolicy 从不重试(也是一种重试策略哈)
- AlwaysRetryPolicy 总是重试
通过 @Backoff 注解实现 , 那么我们首先看一下@Backoff 的参数
@Backoff 参数
- value
- delay
- maxDelay
- multipler
- delayExpression
- maxDelayExpression
- multiplierExpression
- random
@Retryable(value = https://www.isolves.com/it/cxkf/kj/2023-05-18/MyException.class, maxAttempts = 4,backoff = @Backoff(delay = 2000, multiplier = 2, maxDelay = 5000))public void testRetry08() throws MyException {System.out.println("测试-backoff属性");throw new MyException("出现了异常");}
@Backoff 的参数会影响我们使用哪种退避策略- FixedBackOffPolicy
推荐阅读
- 何静|何静公开力挺汪小菲!怒斥大S太欺负人,称其算什么东西必遭报应
- 为什么交警查车会摸一下车尾?听交警一说,网友:太机智了
- 发动机故障灯亮一会就灭了,这是什么情况?
- 杨乐乐|杨乐乐毁灭史:从“湖南一姐”到“万人唾”,她都做了什么事?
- 大头菜有什么功效作用 大头菜可以生吃吗
- 带子什么人不能吃 带子可以生吃吗
- 七境堂绿茶是什么茶 七境堂绿茶价格及批发价查询
- 翡翠|很多人知道翡翠不戴要水养,但用什么水?
- 大闸蟹的选购技巧 大闸蟹988型是什么意思
- |为什么很多员工会谎报离职原因?