乐趣区

RabbitMQ-镜像队列配置相关

设置 policy 方法

例如我们将满足规则“*_mirrored_queue”的队列设置为镜像队列./rabbitmqctl set_policy -p wenda-action mirrored_queue_policy_all “.*_mirrored_queue” ‘{“ha-mode”:”all”}’ 之后申请的所有满足“*_mirrored_queue”规则的队列都是镜像队列
tips: 通过测试表明,使用 policy 的正则规则,可以设置镜像队列。如果没有设置 policy,在申明队列的时候(queue_declare 方法)使用 x -ha-policy 这个参数设置的镜像队列是无效的。设置了 policy 正则规则,不使用 x -ha-policy 参数,只要满足正则规则的 queue 也会自动变成镜像队列,(许多博客上是说明了用队列的 x -ha-policy 参数来设置镜像队列,却没有指明需要提前创建好 policy 规则)。
rabbitmq 文档说明:

镜像队列的同步机制
当一个队列申明为镜像队列之后,并且 ha-mode:all, 集群中所有的节点都会有该队列的镜像,当队列已经有一些数据之后,往集群中加入一个新节点,新节点加入集群之后会自动创建该队列的镜像,但是队列之前是有数据的,这些数据是立马同步到新节点还是手动同步,这时候需要镜像队列的同步机制 queue_declare() 方法中 arg 参数中有该配置:ha-sync-mode manual 手动同步 | automatic 自动同步
tips: 一个队列正在同步的时候,改队列的所有操作都会阻塞,因为各种原因可能会阻塞几分钟、几小时甚至几天。(所以队列同步需谨慎)

退出移动版