根据JMS规范,发送时不必指定消息ID。
当我通过JMSProducer#send()发送消息或通过hawt.io控制台创建消息时,我可以看到消息ID被设置为由Artemis生成的内部序列号。
但是,当我使用MessageConsumer#receive()或MessageListener#onMessage()接收Message时,Message#getJMSMessageID()总是返回null。
使用非空JMS消息ID接收消息的唯一方法是从不同(IBM)消息队列中读取消息,并在发送之前将其所有属性复制到Artemis消息中。
我已经在AMQ7.3.0.GA和Apache ActiveMQ Artemis 2.6.2中测试了这一点,并使用了本机(org.apache.activemq.artemis-jms-client)和AMQP (org.apache.qpid.qpid-jms)客户机。
为了使代理正确填充JMS消息ID,必须在代理上设置一些配置吗?
发布于 2019-06-17 12:35:40
https://stackoverflow.com/questions/56629528
复制相似问题