概述
仲裁队列以 raft 取代镜像,在网络分区与故障转移下表现更好。对持久的关键任务应选用它,并配合投递上限与死信,使毒消息有界。
关键步骤
- 以 quorum 类型创建队列,并在不同节点上选择复制因子。
- 设置投递上限与死信目标,避免毒消息无限循环。
- 更新生产者与消费者到新队列名或搬迁别名。
- 通过停止 leader 节点验证故障转移。
验证
- 队列报告为 quorum 类型且副本数符合预期。
- 停止 leader 会触发选举且不丢消息。
- 超过投递上限的消息进入死信。
- 生产者与消费者对新队列操作成功。
注意事项
- 仲裁队列写延迟高于经典队列,并非所有负载都可直接替换。
- 它不能用于某些特性,如部分瞬态或独占语义。
适用范围
本条目围绕「采用仲裁队列保障消息可靠性」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
rabbitmqadmin declare queue name=orders durable=true \
arguments='{"x-queue-type":"quorum","x-delivery-limit":5}'