ActiveMQ Artemis / RedHat AMQ 是否没有正确设置 JMS 消息 ID?
Does ActiveMQ Artemis / RedHat AMQ not set JMS Message ID correctly?
根据 JMS 规范,我在发送时不必指定消息 ID。
当我通过 JMSProducer#send()
发送消息或通过 hawt.io 控制台创建消息时,我可以看到消息 ID 被设置为 Artemis 代理生成的某个内部序列号。
但是,当我使用 MessageConsumer#receive()
或 MessageListener#onMessage()
接收 Message
时,Message#getJMSMessageID()
总是 returns 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 客户端)客户端。
我是否必须在代理上设置一些配置才能使其正确填充 JMS 消息 ID?
- JMS 消息 ID 通常存储在名为 userID
的本机 Artemis header 中
- 通过管理控制台发送的消息不填充用户ID
- 通过 Core JMS 客户端发送的消息执行填充消息 ID
- 通过 Qpid 客户端发送的消息使用 JMS 消息 ID
填充自定义 属性 NATIVE_MESSAGE_ID
- 无法通过 JMS 获取内部消息 ID
- 如果您通过 Qpid 发送消息并通过 Core 客户端读取它,反之亦然,您将收到一个空的 JMS 消息 ID
根据 JMS 规范,我在发送时不必指定消息 ID。
当我通过 JMSProducer#send()
发送消息或通过 hawt.io 控制台创建消息时,我可以看到消息 ID 被设置为 Artemis 代理生成的某个内部序列号。
但是,当我使用 MessageConsumer#receive()
或 MessageListener#onMessage()
接收 Message
时,Message#getJMSMessageID()
总是 returns 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 客户端)客户端。
我是否必须在代理上设置一些配置才能使其正确填充 JMS 消息 ID?
- JMS 消息 ID 通常存储在名为 userID 的本机 Artemis header 中
- 通过管理控制台发送的消息不填充用户ID
- 通过 Core JMS 客户端发送的消息执行填充消息 ID
- 通过 Qpid 客户端发送的消息使用 JMS 消息 ID 填充自定义 属性 NATIVE_MESSAGE_ID
- 无法通过 JMS 获取内部消息 ID
- 如果您通过 Qpid 发送消息并通过 Core 客户端读取它,反之亦然,您将收到一个空的 JMS 消息 ID