7.3. 使用消息组


消息组是具有以下特征的信息集合:

  • 消息组中的消息共享同一组 ID。也就是说,它们具有相同的组标识符属性。对于 JMS 消息,属性是 JMSXGroupID
  • 消息组中的消息始终供同一使用者使用,即使队列中有许多消费者。如果原始消费者关闭,则可以选择另一消费者接收消息组。

如果您希望同一使用者以序列方式处理属性的特定值的所有消息,则消息组很有用。例如,您可能希望订单让同一消费者序列处理任何特定股票购买。为此,您可以创建一个消费者池,然后将库存名称设置为消息属性的值。这可确保特定库存的所有消息始终由同一消费者处理。

设置组 ID

以下示例演示了如何将消息组与 AMQ 核心协议 JMS 一起使用。

流程

  • 如果您使用 JNDI 为您的 JMS 客户端建立 JMS 连接工厂,请添加 groupID 参数并提供值。使用此连接工厂发送的所有消息均将属性 JMSXGroupID 设置为指定的值。

    java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
    connectionFactory.myConnectionFactory=tcp://localhost:61616?groupID=MyGroup
    Copy to Clipboard Toggle word wrap
  • 如果您不使用 JNDI,请使用 setStringProperty() 方法设置 JMSXGroupID 属性。

     Message message = new TextMessage();
     message.setStringProperty("JMSXGroupID", "MyGroup");
     producer.send(message);
    Copy to Clipboard Toggle word wrap

其他资源

有关如何配置和使用消息组的工作示例,请参阅 <install-dir>/examples/features/standard 下的 message-groupmessage-group2

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat