RabbitMQ中队列有两种模式
1.默认 Default
2.镜像 Mirror 【类似于mongoDB,从一直在通过主的操作日志来进行同步】
*如果将队列定义为镜像模式,那么这个队列也将区分主从,从而做到了队列高可用。【通过一个master(主)和多个slave(从)组成】,消息发布到队列中将被复制到所有从节点上。消费者连接到主节点上。
如何配置镜像队列
只能通过policy进行配置 eg:
1.
rabbitmqctl set_policy ha-all "^ha." '{"ha-mode":"all"}'
ha-all:策略名称
^ha.:队列名正则表达式
在所有的node中进行同步,也就是主的消息同步到所有从中。
* 如果其中某一个节点挂掉了,再重启的时候,node的数据是不会再同步的。
解决办法:将ha-sync-mode设置为automatic【自动同步】
rabbitmqctl sync_queue name 【手动同步】