29.5. 集群消息分组


重要

不支持此功能。

群集分组遵循与正常消息分组相关的不同方法。在群集中,具有特定组 ID 的消息组可以到达任何节点。节点务必要确定哪些组 ID 绑定到哪个节点上哪个消费者。无论消息组默认到达何处,每个节点负责将消息组路由到拥有消费者处理这些组 ID 的节点。当带有给定组 id 的消息发送到连接到集群中给定节点的特定消费者后,即使消费者断开连接,这些消息也不会发送到另一个节点。

这种情形可通过分组处理程序来解决。每个节点都有一个分组处理程序,此分组处理程序(以及其他处理程序)负责将消息组路由到正确的节点。有两种类型的分组处理程序:LOC ALREMOTE

本地处理程序负责确定消息组应采用的路由。远程处理程序与本地处理程序通信,并相应地工作。每个群集应当选择具有本地分组处理程序的特定节点,所有其他节点都应具有远程处理程序。

警告

如果群集中使用了消息分组,则配置为远程分组处理程序的节点失败时,它将中断。为远程分组处理程序设置备份将不正确。

最初收到消息组的节点根据常规集群路由条件(循环队列可用性)做出路由决定。节点向对应的分组处理程序提出此决定,后者将消息路由到建议队列(如果它接受该请求)。

如果分组处理程序拒绝该提议,它会提出其他路由,相应地进行路由。其他节点跟随 Suite,并将消息组转发到所选队列。消息到达队列中后,它将固定到该队列上的客户。

您可以使用管理 CLI 配置分组处理程序。以下命令添加带有地址 news.europe.#LOCAL 分组处理程序。

/subsystem=messaging-activemq/server=default/grouping-handler=my-group-handler:add(grouping-handler-address="news.europe.#",type=LOCAL)
Copy to Clipboard Toggle word wrap

这将需要重新加载服务器。

reload
Copy to Clipboard Toggle word wrap

下表列出了 grouping -handler 的可配置 属性:

Expand
属性描述

group-timeout

使用 REMOTE 处理程序时,此值指定 REMOTE 将通知 LOCAL 使用路由的频率。使用 LOCAL 处理程序时,如果路由没有用于指定的时间,它将被删除,并且需要建立新的路径。该值以毫秒为单位。

grouping-handler-address

对集群连接及其使用的地址的引用。

Reaper-period

回收器运行的频率,以检查是否有超时的组绑定(仅适用于 LOCAL 处理程序)。

timeout

等待多久才能做出处理决定;如果达到此超时,则在发送期间引发异常,确保保持严格排序。

type

处理程序是否为群集的单一本地处理程序,用于做出处理决策,或者是违反了本地处理程序的远程处理程序。可能的值有 LOCALREMOTE

29.5.1. 集群消息分组的最佳做法

集群分组的一些最佳实践如下:

  • 如果您定期创建和关闭消费者,请确保您的使用者在不同节点上均匀分布。固定队列后,消息将自动传输到该队列,无论客户从队列中移除。
  • 如果您要删除绑定了消息组的队列,请确保正在发送消息的会话将删除队列。这样做可确保其他节点在移除后不会尝试将消息路由到此队列。
  • 作为故障转移机制,始终复制具有本地分组处理程序的节点。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat