如何解决如何通过ID浏览消息
我需要按 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浏览消息?
解决方法
过滤似乎只适用于消息属性,而不适用于标题(如 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"));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。