根据 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?