仲裁队列(Quorum Queue)是 RabbitMQ 3.8+ 引入的一种高可用队列类型,基于 Raft 共识算法实现多节点数据复制,确保消息的强一致性和持久化存储。与镜像队列不同,仲裁队列采用多数派写入机制(Quorum),即消息必须被集群中超过半数的节点确认后才会被视为成功写入,从而避免脑裂问题并提升数据安全性。
核心特点
强一致性:消息写入需多数节点确认,确保数据不丢失。
自动故障转移:主节点宕机时,Raft 协议自动选举新主,恢复服务。
持久化优先:所有消息默认持久化到磁盘,适合关键业务。
不支持部分特性:如 TTL、优先级、非持久化消息等。
应用场景
金融交易系统(如支付结算):要求消息绝对不丢失,容忍较高延迟。
医疗数据同步:需严格保证数据一致性,避免因节点故障导致信息错误。
长期存在的核心业务队列(如订单状态更新):队列生命周期长,且需跨节点容灾。
跨机房部署:Raft 协议降低脑裂风险,适合多数据中心场景。
约束与限制
当前仅开源托管版集群支持配置仲裁队列,Serverless 版是分布式高可用集群,无需配置。
配置仲裁队列
1. 登录 TDMQ RabbitMQ 版控制台。
2. 在左侧导航栏选择集群管理 > Queue,选择 Vhost 后,单击新建进入创建 Queue 页面。
3. 按照页面指引填写完 Queue 的信息后,单击提交,完成 Queue 创建。

分类 | 参数 | 是否必选 | 说明 |
基本信息 | 当前 Vhost | 是 | 表示正在给哪个 Vhost 创建 Queue。 |
| Queue 名称 | 是 | 填写 Queue 名称,需符合命名规则:1-64个字符,只能包含字母、数字、“-”及“_”。 Queue 创建成功后,不支持修改名称。 |
| 类型 | 是 | 选择 Quorum 队列。 |
| 节点 | 是 | 在下拉框中选择 Queue 所在的集群节点。 |
| Queue 说明 | 否 | 填写 Queue 的说明信息,最多128个字符。 |
常用参数 | Auto Expire | 否 | Queue 的空闲存活时间,当 Queue 在指定时间内没有消费者连接、没有消息被消费或发布,会被自动删除。 |
| Max Length | 否 | Queue 可以容纳的消息数量上限,超过设定值后将触发 Overflow behaviour 溢出策略。 |
| Max Length Bytes | 否 | Queue 的存储容量上限,超过设定值后将触发 Overflow behaviour 溢出策略。 |
| Delivery Limit | 否 | 若队列内消息投递失败,允许的重试次数。当消息的投递次数达到设定值时,消息会被自动投递到死信队列(如果配置了死信 Exchange),否则会被丢弃。 |
| Overflow Behaviour | 否 | 当 Queue 容量达到上限时,队列的消息处理策略: drop-head:当队列达到容量上限时,丢弃队列头部的消息。 reject-publish:当队列达到容量上限时,拒绝新消息的发布,并将发布操作标记为失败。 |
| 死信策略 | 是 | 无法正常消费的消息投递到死信队列的策略。 at-most-once:至多投递一次,消息可能丢失,但不会重复,适用于允许丢消息的非关键业务。 at-least-once:至少投递一次,消息不会丢失,但可能重复,适用于不允许丢消息的关键业务。只有 overflow behaviour 选择了 reject-publish 时,死信策略才可以选择 at-least-once。 |
| 死信 Exchange | 是 | 消息达到最大重试次数仍投递失败,将被投递到死信 Exchange,默认指定名为 AMQP default exchange 的默认 Exchange。 |
其他高级选项 | Single Active Consumer | 否 | 是否开启单一活跃消费者,默认关闭。 若设置为 true,Queue 同一时间只允许一个消费者消费消息,其他消费者会处于待命状态,当活跃消费者断开后,会自动选择下一个消费者。适用于顺序敏感型任务,如订单状态变更等场景。 |
| Max In Memory Length | 否 | Quorum 队列在内存中缓存的最大消息数量,超出后消息会被写入磁盘。 |
| Max In Memory Bytes | 否 | Quorum 队列在内存中缓存消息的总大小(字节),超出后消息会被写入磁盘。 |
| Initial cluster size | 否 | 定义 Quorum 队列在集群中参与 Raft 共识的初始节点数量。 |
| Leader locator | 是 | 指定 Quorum 队列的 Leader 节点选择策略: client-local:优先选择客户端连接的节点作为当前队列的 Leader 节点,可以减少网络延迟) balanced:均衡分布 Leader,避免某些节点负载过高 |