我需要按 ID 浏览消息。
在 QueueControl.class
中,我找到了返回所有消息的方法 browse()
和方法 browse(@Parameter(name = "filter", desc = "A message filter (can be empty)")
。
我尝试使用过滤器 "messageID = '10737437509'"
(基于此处的示例 https://activemq.apache.org/components/artemis/documentation/latest/filter-expressions.html)获取消息,但这不起作用。
如何通过ID浏览消息?
答案 0 :(得分:0)
过滤似乎只适用于消息属性,而不适用于标题(如 messageID)。
您可以在发送前设置自定义消息 ID 属性:
TextMessage message = session.createTextMessage("abc");
message.setIntProperty("myMessageID", 123);
producer.send(message);
然后,您可以像这样按属性过滤:
CompositeData[] browse = queueControl.browse("myMessageID=123");
if (browse != null && browse.length > 0) {
System.out.println((String) browse[0].get("text"));
}