我正在试验resilience4j和调整配置,以优化负载下的性能。我正在利用的一个功能是使用线程池隔板,并使用所述线程池异步执行函数。有没有办法可以监控线程池的状态?我要找的东西应该是:
logger.debug(threadPoolBulkhead.getNumActiveThreads());
logger.debug(threadPoolBulkhead.getNumQueuedThreads());这样的事情有可能发生吗?
发布于 2021-03-19 08:51:31
指标,以编程方式
您可以自己以编程方式获取所需的指标:ThreadPoolBulkhead#getMetrics。
通过千分尺或下拉向导指标实现的指标
您可以通过指标监视当前状态,因为resilience4j本身支持微米,并提供您感兴趣的指标,即使in the docs没有明确提到这一点。Proof here.
MeterRegistry meterRegistry = new SimpleMeterRegistry();
ThreadPoolBulkheadRegistry bulkheadRegistry = ThreadPoolBulkheadRegistry.ofDefaults();
ThreadPoolBulkhead bulkhead = bulkheadRegistry.bulkhead("backendA");
// Register all retries at once
TaggedThreadPoolBulkheadMetrics
.ofThreadPoolBulkheadRegistry(bulkheadRegistry)
.bindTo(meterRegistry);事件
您可以注册防弹头事件的侦听器,以便在执行/完成调用时收到通知:https://resilience4j.readme.io/docs/bulkhead#consume-emitted-bulkheadevents
bulkhead.getEventPublisher()
.onCallPermitted(event -> logger.info(...))
.onCallRejected(event -> logger.info(...))
.onCallFinished(event -> logger.info(...));https://stackoverflow.com/questions/66701052
复制相似问题