我尝试通过 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 获取单个消息?谢谢
这里有几点需要记住...
JMSMessageID
应该就足够了。这在 Web 控制台中表示为“用户 ID”。JMSMessageID
如果您使用 JMS 客户端,则在查询中使用会起作用。但是,ActiveMQ Artemis Web 控制台在浏览消息时不使用 JMS 客户端。它只是使用核心 API。因此,您需要使用核心过滤器表达式,即AMQUserID
。JMSMmessageID
需要以JavaDocID:
中所述的内容开头。"
)。您应该改用单引号(即'
)。如相关 JavaDoc中所述:把所有这些放在一起......这样的事情应该对你有用: