.net Rabbitmq 镜像队列(十)

2.5 配置镜像队列

1. 开启镜像队列

这里我们为所有队列开启镜像配置,其语法如下:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

2. 复制系数

在上面我们指定了 ha-mode 的值为 all ,代表消息会被同步到所有节点的相同队列中。这里我们之所以这样配置,因为我们本身只有三个节点,因此复制操作的性能开销比较小。如果你的集群有很多节点,那么此时复制的性能开销就比较大,此时需要选择合适的复制系数。通常可以遵循过半写原则,即对于一个节点数为 n 的集群,只需要同步到 n/2+1 个节点上即可。此时需要同时修改镜像策略为 exactly,并指定复制系数 ha-params,示例命令如下:

rabbitmqctl set_policy ha-two "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
 

除此之外,RabbitMQ 还支持使用正则表达式来过滤需要进行镜像操作的队列,示例如下:

rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
 

此时只会对 ha 开头的队列进行镜像。更多镜像队列的配置说明,可以参考官方文档:Highly Available (Mirrored) Queues

3. 查看镜像状态

配置完成后,可以通过 Web UI 界面查看任意队列的镜像状态,情况如下:

 

 

参考 RabbitMQ高可用-镜像模式部署使用 - 一片相思林 - 博客园 (cnblogs.com)

rabbitmqctl set_policy [ha-all] "^" '{"ha-mode":"all"}' //策略正则表达式为 “^” 表示所有匹配所有队列名称

rabbitmqctl set_policy -p [虚拟主机名称] [策略名称如ha-all ] "^" '{"ha-mode":"all" , "ha-sync-mode":"automatic"}'

在任意一个节点上执行:rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all" , "ha-sync-mode":"automatic"}'

或者指定vhost: rabbitmqctl set_policy -p demo ha-all "^" '{"ha-mode":"all" , "ha-sync-mode":"automatic"}' 将所有队列设置为镜像队列,

即队列会被复制到各个节点,各个节点状态保持一直。 到这里,RabbitMQ 高可用集群就已经搭建好了,最后一个步骤就是搭建均衡器。

策略名称:自定义 “^”:匹配所有队列 ha-sync-mode: 默认为手动,可以配置为自动,区别在于,如果是自动做镜像回复,则该队列会处于不可用状态直到同步完成

 

posted on 2023-08-20 20:28  是水饺不是水饺  阅读(24)  评论(0)    收藏  举报

导航