如何通过ID浏览消息

时间:2020-12-29 10:16:49

标签: activemq-artemis

我需要按 ID 浏览消息。

QueueControl.class 中,我找到了返回所有消息的方法 browse() 和方法 browse(@Parameter(name = "filter", desc = "A message filter (can be empty)")

enter image description here

我尝试使用过滤器 "messageID = '10737437509'"(基于此处的示例 https://activemq.apache.org/components/artemis/documentation/latest/filter-expressions.html)获取消息,但这不起作用。

如何通过ID浏览消息?

1 个答案:

答案 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"));
}