Docker RabbitMQ群集不选择新的主服务器

Docker RabbitMQ群集不选择新的主服务器,docker,rabbitmq,cluster-computing,message-queue,Docker,Rabbitmq,Cluster Computing,Message Queue,我已经建立了一个RabbitMQ集群,它有3个节点:rabbit1、rabbit2和rabbit3,每个节点都在docker容器中运行 所有队列都在三个节点之间镜像,rabbit1是主队列。当我停止rabbit2或rabbit3的容器时,剩下的两个节点工作正常。如果一个队列中有3条消息,那么这些消息仍然存在于rabbit1和另一个仍在运行的节点上 但是,如果我停止rabbit1,rabbit2和rabbit3的队列将被清空,直到我再次启动rabbit1。如果我向rabbit2或rabbit3发送

我已经建立了一个RabbitMQ集群,它有3个节点:rabbit1、rabbit2和rabbit3,每个节点都在docker容器中运行

所有队列都在三个节点之间镜像,rabbit1是主队列。当我停止rabbit2或rabbit3的容器时,剩下的两个节点工作正常。如果一个队列中有3条消息,那么这些消息仍然存在于rabbit1和另一个仍在运行的节点上

但是,如果我停止rabbit1,rabbit2和rabbit3的队列将被清空,直到我再次启动rabbit1。如果我向rabbit2或rabbit3发送消息,则会收到该消息,但不会将其保存到队列中;而当rabbit1启动时,我向rabbit2/rabbit3发送了一些东西,消息被保存并正确同步

<> P>是否有任何方式或任何配置需要考虑,以便当主机关闭时,消息不会从奴隶中释放,而是奴隶选择新的主机,或者至少保存消息?
非常感谢您。

设置集群是一回事,但您还需要配置队列镜像。默认情况下,队列不会复制到其他节点上:您需要使用策略显式复制队列


上面链接的RabbitMQ文档作为几个用例的示例。

设置集群是一回事,但您还需要配置队列镜像。默认情况下,队列不会复制到其他节点上:您需要使用策略显式复制队列


上面链接的RabbitMQ文档作为几个用例的示例。

因此我发现了问题:

我在代码中声明队列,即使rabbitmq对这些队列进行“计数”,它们也不会出现在管理下,例如,不能使用“rabbitmqctl list_队列”查看

如果我通过UI或rabbitmqadmin声明队列,并让服务连接到已经存在的队列,那么它可以正常工作


我想知道为什么队列不会出现在管理工具中,即使它们显然存在于某个地方(因为我可以读取/推送)。

因此我发现了问题:

我在代码中声明队列,即使rabbitmq对这些队列进行“计数”,它们也不会出现在管理下,例如,不能使用“rabbitmqctl list_队列”查看

如果我通过UI或rabbitmqadmin声明队列,并让服务连接到已经存在的队列,那么它可以正常工作


我想知道,为什么队列不会出现在管理工具中,即使它们显然存在于某个地方(因为我可以阅读/推送)。

我应该澄清一下:我设置了正确的策略,在所有笔记之间复制消息并自动同步。这就是为什么我如此困惑,为什么它不起作用。我的策略类似于:rabbitmqctl set_policy ha all“^ha”。{“ha mode”:“all”,“ha sync mode”:“automatic”}“因此,如果停止包含镜像队列主节点的RabbitMQ节点,则其他节点上的某个从节点将升级为主节点”,它应该可以工作。队列的名称是什么?我的队列名为booking\u cancelled、booking\u confirmation、booking\u deleted和booking\u change,策略设置为set\u policy booking“^booking”{“ha mode”:“all”、“ha sync mode”:“automatic”}“我应该澄清一下:我设置了正确的策略,在所有笔记之间复制消息并自动同步。这就是为什么我如此困惑,为什么它不起作用。我的策略类似于:rabbitmqctl set_policy ha all“^ha”。{“ha mode”:“all”,“ha sync mode”:“automatic”}“因此,如果停止包含镜像队列主节点的RabbitMQ节点,则其他节点上的某个从节点将升级为主节点”,它应该可以工作。队列的名称是什么?我的队列名为“预订取消”、“预订确认”、“预订删除”和“预订更改”,策略设置为“设置策略预订”^booking”“{“ha模式”:“全部”、“ha同步模式”:“自动”}