全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

如何设置镜像队列

最近更新时间:2021-02-20 17:08:18

镜像队列简介

RabbitMQ的集群创建后,默认消息只存在于队列所在节点,当此节点故障后,消息就丢失了。
为了解决上述消息丢失的问题,引入RabbitMQ的镜像队列机制,将queue镜像到cluster中其他的节点之上。
在该实现下,如果集群中的一个节点失效了,queue能自动地切换到镜像中的另一个节点以保证服务的可用性。

镜像对列设置

镜像队列,在单节点宕机时,提供高可用服务,保证数据不丢失。镜像队列是在购买服务后,由用户配置同步策略来实现的:

rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
        ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
            all:表示在集群中所有的节点上进行镜像
            exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
            nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
        ha-params:作为参数,为ha-mode的补充
        ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级

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

具体设置步骤

1.打开web ui管理页面:
image2021218_184933 1.png
2.如对vhost /,中所有的队列设置则按以下内容填写,并点击Add policy:
image2021218_185338.png
3.如果queue中有存量未消费的消息时,则需要手动触发同步才可进行数据的复制(同步期间会引起阻塞),红色箭头指向部分代表需要手动同步存量消息,如果没有则说明不需要单独同步存量消息。(如果policy设置后,消费者消费完了存量消息,则会自动变成正常状态,此时就无需手动同步了)
image2021218_185534.png
4.点击队列名,进入队列详情界面,可以看到如下信息,点击Synchronise则可发起同步
image2021218_185742.png
5.当同步完成后,进入queues的界面,需要同步的队列的显示效果与其他队列相同
image.png

更多参考请见高可用队列设置

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈