是否可以通过Jolokia JMX从ActiveMQ Artemis获取单条消息?

问题描述 投票:0回答:1

我尝试通过 Jolokia JMX 从 Artemis 获取一条消息,但找不到过滤

JMSMessageID
的方法。

代理版本:Red Hat AMQ 7.11.7

我目前最好的尝试是:

https://broker/console/jolokia/exec/org.apache.activemq.artemis:broker=!%22amq-broker!%22,component=addresses,address=!%22ExpiryQueue!%22,subcomponent=queues,routing-type=!%22anycast!%22,queue=!%22ExpiryQueue!%22/browse(java.lang.String)/JMSmessageID=!%2215232235223!%22

它使用参数

browse(String filter)
调用
QueueControl
上的
JMSmessageID="15232235223"
方法,但过滤器不起作用。当我执行这个请求时,我只是获取队列的所有消息。

当我省略消息 ID 周围的双引号时,我没有得到任何结果。

我在另一个答案中读到,不可能过滤消息头(仅适用于属性),这听起来很奇怪。

但是,有什么建议如何通过消息 ID 获取单条消息吗? 谢谢

jms jmx activemq-artemis jolokia
1个回答
0
投票

这里有一些事情需要记住......

  1. 您在 Web 控制台中看到的“消息 ID”实际上是代理本身跟踪消息的一种方式。它在某些情况下可能会发生变化,因此用作客户端应用程序的唯一消息标识符是无效的。如果您使用的是 JMS 客户端,那么
    JMSMessageID
    就足够了。
  2. 如果您使用的是 JMS 客户端,则在查询中使用
    JMSMessageID
    有效。但是,ActiveMQ Artemis Web 控制台在浏览消息时不使用 JMS 客户端。它仅使用Core API。因此,需要使用一个核心过滤表达式,即AMQUserID
  3. JMSMmessageID
     需要以 
    ID:
     开头,如 
    JavaDoc 中所述。
  4. 核心过滤器语法使用与 JMS 选择器相同的 SLQ 92 语法。此语法不会将字符串文字括在双引号中(即
  5. "
    )。您应该使用单引号(即 
    '
    )。如
    相关 JavaDoc 中所述:
    字符串文字用单引号括起来...

把这些放在一起......这样的东西应该对你有用:

https://broker/console/jolokia/exec/org.apache.activemq.artemis:broker=!%22amq-broker!%22,component=addresses,address=!%22ExpiryQueue!%22,subcomponent=queues,routing-type=!%22anycast!%22,queue=!%22ExpiryQueue!%22/browse(java.lang.String)/AMQuserID='ID:8dfdf33e-bc84-11ef-9ea4-3ce1a1d12939'
    
© www.soinside.com 2019 - 2024. All rights reserved.