rabbitmqctl list_queues name type slave_pids # 声明队列时带上这个参数 x-queue-type: quorum
开启镜像队列后每条消息都要等所有副本确认,集群网络流量翻了几倍,写入延迟从 3ms 涨到 80ms。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,经典镜像队列把每次写入同步复制到全部镜像节点,节点越多写入开销越大,新版 RabbitMQ 已经推荐改用 Raft 的仲裁队列。
「RabbitMQ 镜像队列」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
处理上按这个顺序:统计镜像队列数量和节点数 判断是不是真要多副本;新队列统一声明成 quorum 类型 不要再沿镜像策略;存量队列按业务分批迁移 不要一次性全部改掉。
改完只确认一件事:新队列 type 显示 quorum,写入延迟回到 5ms 以内。
