我正在使用
QueueBrowser
从队列中获取消息,但无法获取 messageId。由于某种原因,我的用户 ID 显示了
private void viewMessage() throws NamingException, JMSException {
Queue queue = (Queue) initialContext.lookup("dynamicQueues/" + "TestQueue");
if (queueBrowser == null){
queueBrowser = queueSession.createBrowser(queue);
}
Enumeration<Message> messageEnumeration = queueBrowser.getEnumeration();
ArrayList<Message> messages = new ArrayList<>();
while (messageEnumeration.hasMoreElements()){
messages.add(messageEnumeration.nextElement());
}
messages.forEach(value -> {
try {
System.out.println(value.getJMSMessageID());
} catch (JMSException e) {
throw new RuntimeException(e);
}
});
}
在Artemis中,控制台中显示的消息的“用户ID”是发送客户端(用户)设置的“消息ID”。这有点令人困惑,但这就是 JMS 客户端在发送时在消息上设置的值作为其 JMS 消息 ID。您看到的消息 ID 值是代理为从发件人收到的消息创建的 ID,用于内部跟踪。