首页 > 解决方案 > 是否可以通过 Jolokia API 从 ActiveMQ 队列中检索超过 400 条消息?

问题描述

我在 ActiveMQ 中有一个错误队列,它由 Apache Camel 的 onException 错误处理程序填充。此队列中可能有数千条消息。

我没有使用 ActiveMQ Web 控制台,而是构建了一个自定义 Web 管理员来集成来自其他组件的其他一些统计信息。因此,我也想包含来自 ActiveMQ 的统计信息。

ActiveMQ 版本:5.14.3

我查看了 Jolokia JMX API 及其操作。例如,我在代理的 Jolokia API 端点上有以下负载:

{
    "type": "exec",
    "mbean": "org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=test.errors",
    "operation": "browse(java.lang.String)",
    "arguments": ["EXCEPTION_TYPE LIKE '%jdbc%'"]
}

标头字段EXCEPTION_TYPE已通过 Apache Camel Route 填充。目前我在这个队列中有超过 10k 条消息。我使用如上所示的有效负载向我的代理 API 端点发出了 POST 请求。虽然我有超过 10k 条消息,但这个请求只产生了 400 条消息(由于最大页面大小限制,在源代码中硬编码)。这意味着我一次无法通过 Jolokia 收到超过 400 条消息。我也尝试了 browseMessages() 方法。看起来,一般来说,它做同样的事情。

  1. 是否可以浏览这些消息(假设它们的数量很大,可能在 10k+ 左右)?
  2. 或者,是否可以对它们进行分页?我看不到相关的操作方法。

我试图看看 Hawtio 在检索所有消息时是否做了一些特别的事情。但是,结果是相同的(最多 400 条消息)。

ActiveMQ Web 控制台会获取所有消息。这可能是因为它与 ActiveMQ 项目紧密耦合。

我不仅限于 JMX/Jolokia。如果可以通过某些 API 获取这些统计信息,那同样可以。

任何输入都会很棒!

标签: activemqjmxjolokia

解决方案


推荐阅读