柠檬酸田 2023-04-22 21:44 采纳率: 66.7%
浏览 26
已结题

rabbitmq普通集群主从节点的问题

rabbitmq普通集群主节点创建的队列为什么从节点也能发消息?在从节点中创建队列,为什么也能同步到包括主节点和从节点上?
而从节点创建的队列,从节点宕机后,其他节点也显示队列down状态?

img


图是这样的呀,不应该是只有主节点才能发消息么
我创建了三台虚拟机ip地址分别是:
192.168.130.151 (主)
192.168.130.152 (从)
192.168.130.153 (从)
然后我现在创建了主节点的队列,已经同步到从节点中了。现在队列中有1个消息

img


然后我是用152从节点发消息

img


也发送成功进入主节点创建的队列了。

img


接下来我使用152这个从节点创建新队列,并运行程序

img


在主节点151和从节点153中都有152节点所创建的队列

想不明白这一点,想要个详细的答案,谢谢。

  • 写回答

3条回答 默认 最新

  • AllenGd 领域专家: 大数据技术领域 2023-04-23 10:17
    关注

    首先,需要明确的是 RabbitMQ 普通集群中的节点不是从属关系,每一个节点都拥有完整的队列和消息内容,因此在任何一个节点上创建的队列都是可以在集群中任何一个节点上进行消息的发送和接收。
    对于从节点在发消息的时候,实际上是将消息发送到了主节点,然后主节点再将消息广播给集群中的其他节点。这是因为在 RabbitMQ 集群中,消息是存储在队列中的,而队列只会存在于主节点上,从节点上并不会出现独立的队列。因此,创建队列实际上是在主节点上进行的,然后通过主节点的复制机制同步到其他节点上的。
    但是,像前面所述,从节点上并不会存在独立的队列。因此,当从节点创建队列之后,它实际上只是发送了队列定义的信息到主节点上,然后主节点才会将队列创建出来。如果从节点发生故障,其他节点就会检测到该节点无法响应,并且就会自动将它标记为“down”。在这种情况下,从节点创建的队列状态自然就会变成 down。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月25日
  • 修改了问题 4月23日
  • 修改了问题 4月23日
  • 展开全部