RabbitMQ集群下队列存放消息的问题

时间:2021-04-25 15:39:30

RabbitMQ中队列有两种模式

  1.默认  Default 

  2.镜像  Mirror  【类似于mongoDB,从一直在通过主的操作日志来进行同步】

*如果将队列定义为镜像模式,那么这个队列也将区分主从,从而做到了队列高可用。【通过一个master(主)和多个slave(从)组成】,消息发布到队列中将被复制到所有从节点上。消费者连接到主节点上。

如何配置镜像队列

  只能通过policy进行配置  eg:

    1.  

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

  ha-all:策略名称

  ^ha\.:队列名正则表达式

在所有的node中进行同步,也就是主的消息同步到所有从中。

  RabbitMQ集群下队列存放消息的问题

RabbitMQ集群下队列存放消息的问题

RabbitMQ集群下队列存放消息的问题

*  如果其中某一个节点挂掉了,再重启的时候,node的数据是不会再同步的。

  解决办法:将ha-sync-mode设置为automatic【自动同步】

RabbitMQ集群下队列存放消息的问题

      rabbitmqctl sync_queue name  【手动同步】