wso2 esb 监控 worker_pool_queue_length != -1 时排队的消息数

wso2 esb monitor number of messages queued when worker_pool_queue_length != -1

在 wso2 ESB 5.0.0 中,我们按照 here.

的解释,使用 passthru-http.properties

我想知道是否有办法在 运行 ESB 中获取 worker_pool_queue_length 属性 的值。好吧,不是文件中设置的值,而是任何时刻存储在队列中的元素的实际值。因为我们没有使用默认的 -1 值。我们正在探索使用绑定队列。

here 开始,我一直在尝试使用 jmx

中的以下 bean

而这个属性,

QueueSize, number of messages currently queued. Messages get queued if all the worker threads in this transport thread pool are busy.

但它的值始终为 0。而且我确信它应该更高。当我们使用 Jmeter 向 ESB 发送消息时。并且正在创建新的工作线程,因此队列中有元素。无论我们多么努力地访问 esb,我们都可以看到所有线程都在工作,连接被拒绝......但始终是 0。

此外,将 log4 变为 DEBUG 并不幸运。

任何想法,我怎样才能得到排队消息的数量?

WSO2 EI 使用 java ThreadPoolExecutor 实现 [1] 生成新线程来处理请求,如果没有足够数量的线程可用,它还会处理消息排队。因此,您似乎无法通过调试日志获取排队消息的数量。

如果您有兴趣分析排队消息的数量,我建议您进行堆转储并进行分析。它将指示排队消息的数量。

[1]-http://tutorials.jenkov.com/java-util-concurrent/threadpoolexecutor.html