根据 JMS 规范,我在发送时不必指定消息 ID。
当我通过 hawt.io 控制台发送消息JMSProducer#send()
或创建消息时,我可以看到消息 ID 被设置为由 Artemis 代理生成的某个内部序列号。
但是,当我使用MessageConsumer#receive()
orMessageListener#onMessage()
接收 aMessage
时,Message#getJMSMessageID()
总是返回null
.
我可以接收具有非空 JMS 消息 ID 的消息的唯一方法是从不同的 (IBM) 消息队列中读取消息,并在发送之前将其所有属性复制到 Artemis 消息。
我已经用 AMQ 7.3.0.GA 和 Apache ActiveMQ Artemis 2.6.2 测试了这个,包括原生 (org.apache.activemq.artemis-jms-client) 和 AMQP (org.apache.qpid.qpid-jms-client ) 客户。
我必须在代理上设置一些配置以使其正确填充 JMS 消息 ID?