【问题标题】:ActiveMQ Artemis message idActiveMQ Artemis 消息 ID
【发布时间】:2021-09-02 09:05:58
【问题描述】:

我正在从 ActiveMQ 5.0 迁移到 ActiveMQ Artemis。我看到消息 ID 格式已更改。 5.0 使用客户端 ID 作为前缀,而 Artemis 似乎使用一种序列。

有没有办法以某种方式控制消息ID?

从ID推导出生产者非常方便。

【问题讨论】:

  • 你在使用 JMS 吗?
  • 是的,我们正在使用 JMS

标签: activemq-artemis


【解决方案1】:

简而言之,没有用户可配置的方式来控制JMSMessageID

不管怎样,从JMSMessageID 推断生产者的能力是 OpenWire JMS 客户端实现的一个怪癖。如 JMS 规范中所述,客户端实现(即 JMS“提供者”)在发送消息时在消息上设置JMSMessageID。 ActiveMQ 5.x 附带的 OpenWire JMS 客户端使用生产者 ID(可以包括客户端 ID)和序列号来生成该值。 ActiveMQ Artemis 附带的核心 JMS 客户端使用 this method 生成 UUID 值。 Qpid JMS 客户端(它使用 AMQP 1.0,也受 ActiveMQ Artemis 支持)仍然使用另一种方法。

JMS 规范中没有任何内容需要生产者和JMSMessageID 之间的关联,并且任何此类关联无论如何都只适用于特定的客户端实现。它不适用于代理支持的所有其他类型的客户端(例如 MQTT、STOMP、AMQP 等)。

如果您想识别发送消息的生产者,那么我建议您只需在消息上设置一个具有所需标识的属性。这适用于所有 JMS 客户端实现。

【讨论】:

  • 好的,谢谢您的解释。我将添加一个带有生产者标识的属性。
猜你喜欢
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
相关资源
最近更新 更多