默认镜像策略

最近更新时间: 2026-06-30 15:06:00

策略说明

为了提高消息队列 RabbitMQ 集群的可靠性和容错能力,在用户新建 RabbitMQ 集群或者新建 Vhost 时(该集群节点数至少为3),为用户提供开启“默认镜像队列”的选项。此镜像队列可以在 RabbitMQ 集群中的多个节点上复制队列中的消息,确保在某个节点发生故障时,队列中的消息不会丢失。
以下是消息队列 RabbitMQ 为用户提供的“默认镜像队列”策略参数详细说明:

<strong>参数名</strong><strong>配置参数</strong><strong>参数说明</strong>
Namepay-mirror-policy策略名称,用于标识和引用该策略。
Pattern.*策略的匹配模式,采用正则表达式语法。​​点号(.)​​表示匹配任意字符,​​星号(*)​​表示匹配前面的字符零次或多次,所以.*表示匹配任意名称的队列。
Apply toQueues策略的应用对象,设置为 Queues 表示策略应用于队列。
Priority0策略的优先级。如果一个队列匹配多个策略,那么优先级高的策略将会被应用,0 表示最低优先级。
ha-modeexactly镜像队列的复制模式。
  • exactly:表示队列的消息会被复制到指定数量的节点
  • all:表示队列的消息会被复制到所有节点。

选择 exactly 可以在保证可用性的同时,减少网络和存储的开销,提高性能。
ha-params3镜像队列的复制参数。当 ha-mode 设置为 exactly 时,这里需要设置复制的节点数量。默认设置为3,即使将来扩展到5个节点,性能仍然可以保持在一个较好的水平。
ha-promote-on-failurealways节点故障时的镜像队列提升策略。always 表示无论节点故障的原因如何,都会将镜像队列提升为主队列。when-synced 表示只有当节点故障后重新同步时,才会将镜像队列提升为主队列。默认设置为 always,以确保在任何故障情况下都能保持服务的可用性。
ha-promote-on-shutdownwhen-synced节点正常关闭时的镜像队列提升策略。
  • always:表示无论节点关闭的原因如何,都会将镜像队列提升为主队列。
  • when-synced:表示只有当节点关闭后重新同步时,才会将镜像队列提升为主队列。

默认设置为 when-synced,以避免不必要的提升操作。
ha-sync-modemanual镜像队列的同步模式。
  • automatic:表示在节点启动或重新连接到集群时,自动将镜像队列与主队列同步。
  • manual:表示需要手动触发同步操作,将镜像队列与主队列同步。

默认设置为manual,以避免堆积消息时自动同步影响集群性能。

通过配置默认的镜像队列策略,可以在保证 RabbitMQ 集群可靠性的同时,优化性能和资源利用。用户可以根据自己的需求和场景,进一步调整这些参数,也可以删除并重新新建策略。

操作步骤

开启默认镜像策略

如果在创建集群时选择了开启镜像队列,则该集群的“默认Vhost”会自动创建默认镜像策略。为Vhost配置镜像策略还有以下两种方式:
1、新建 Vhost 时开启镜像队列:集群列表 > Vhost > 新建 Vhost > 开启镜像队列。

2、在 Vhost列表 > Vhost详情页 > 策略 页签,点击新建策略,选择配置“镜像策略”,详情可以参考策略管理

限制

消息队列 RabbitMQ 只允许3个或以上节点的集群开启“默认镜像队列”,主要是为了确保集群的高可用性和容错能力。在一个拥有3个或更多节点的集群中,镜像队列可以在多个节点上复制消息,这样既可以分担每个节点的负载,提高性能,又可以在某个节点发生故障时保证服务的正常运行。同时,这也提供了更多的灵活性,允许我们根据实际需求灵活配置镜像队列的参数。因此,这个限制是为了提供更稳定、更可靠的服务。