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 参数使用。