我尝试通过 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
就足够了。JMSMessageID
会 有效。但是,ActiveMQ Artemis Web 控制台在浏览消息时不使用 JMS 客户端。它仅使用Core API。因此,需要使用一个核心过滤表达式,即AMQUserID
。
JMSMmessageID
需要以
ID:
开头,如JavaDoc 中所述。
"
)。您应该使用单引号(即
'
)。如相关 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'