TimeLimiter
timeoutDuration : 默认 1s : 超时时间配置 (类型是 Duration)
cancelRunningFuture : 默认 true: 当 future.get 超时时候(TimeoutException),是否调用 future.cancel 取消异步任务
aop 时候 执行先后顺序说明
优先级列表
| 名称 | aop优先级(从高到底 (高的先执行)) |
|---|---|
| retryAspectOrder | Ordered.LOWEST_PRECEDENCE - 4 |
| circuitBreakerAspectOrder | Ordered.LOWEST_PRECEDENCE - 3 |
| rateLimiterAspectOrder | Ordered.LOWEST_PRECEDENCE - 2 |
| timeLimiterAspectOrder | Ordered.LOWEST_PRECEDENCE - 1 |
| BulkheadAspectOrder | Ordered.LOWEST_PRECEDENCE |
spring 定义顺序值参考
public interface Ordered {
int HIGHEST_PRECEDENCE = -2147483648;
int LOWEST_PRECEDENCE = 2147483647;
int getOrder();
}
事件 是在特定线程执行吗?
答案:
通过如下日志, 事件 在入口线程执行,而不是特定线程池执行。
demo执行日志(我测试 的是TimeLimiter 的事件)
0:53:57.863 [main] INFO com.cmic.ydrz.helloworld.resilience4j.Resilience4j1 - onSuccess:2021-07-29T00:53:57.861+08:00[Asia/Shanghai]: TimeLimiter 'myTimeLimiter' recorded a successful call.
00:53:57.868 [main] DEBUG io.github.resilience4j.timelimiter.internal.TimeLimiterImpl - Event SUCCESS published: 2021-07-29T00:53:57.861+08:00[Asia/Shanghai]: TimeLimiter 'myTimeLimiter' recorded a successful call.
00:53:58.871 [main] INFO com.cmic.ydrz.helloworld.resilience4j.Resilience4j1 - onTimeout:2021-07-29T00:53:58.871+08:00[Asia/Shanghai]: TimeLimiter 'myTimeLimiter' recorded a timeout exception.
00:53:58.872 [main] DEBUG io.github.resilience4j.timelimiter.internal.TimeLimiterImpl - Event TIMEOUT published: 2021-07-29T00:53:58.871+08:00[Asia/Shanghai]: TimeLimiter 'myTimeLimiter' recorded a timeout exception.
Tags 的作用
问题
我们 在 circuitBreaker 等几个功能类都能发现 tags 参数,作用是什么呢?
回答:
应该是当作 Metrics(监控指标) 的 一些 额外tags 参数使用。
Resilience4j 的 TimeLimiter 配置包括超时时间和是否取消异步任务。AOP执行顺序由 `Ordered` 接口的 `LOWEST_PRECEDENCE` 值决定,从高到低依次为 retry、circuitBreaker、rateLimiter、timeLimiter 和 bulkhead。事件处理在主线程中进行。tags 参数作为监控指标的额外标签使用。
3395

被折叠的 条评论
为什么被折叠?



