RabbitMQ群集节点故障

RabbitMQ群集节点故障,rabbitmq,Rabbitmq,我有一个RabbitMQ集群(不含HA),它的节点位于多个实例中。从文档中,我了解到的是,在集群模式下,队列不被镜像,而是由声明队列的节点拥有 所以,现在的问题是,当拥有队列的节点停机时会发生什么?如果我错了,请纠正我的错误,因为队列没有镜像,客户端应用程序将抛出丢失的队列 我们是否应该编写逻辑来确定如果节点停机,队列必须重新声明,在这种情况下,消息会发生什么情况 所以,现在的问题是,当拥有队列的节点停机时会发生什么 从: 当RabbitMQ退出或崩溃时,它将忘记队列和消息,除非您告诉它不要这样

我有一个RabbitMQ集群(不含HA),它的节点位于多个实例中。从文档中,我了解到的是,在集群模式下,队列不被镜像,而是由声明队列的节点拥有

所以,现在的问题是,当拥有队列的节点停机时会发生什么?如果我错了,请纠正我的错误,因为队列没有镜像,客户端应用程序将抛出丢失的队列

我们是否应该编写逻辑来确定如果节点停机,队列必须重新声明,在这种情况下,消息会发生什么情况

所以,现在的问题是,当拥有队列的节点停机时会发生什么

从:

当RabbitMQ退出或崩溃时,它将忘记队列和消息,除非您告诉它不要这样做。要确保消息不会丢失,需要做两件事:我们需要将队列和消息都标记为持久消息

下一个问题:

我们是否应该编写逻辑来确定如果节点停机,队列必须重新声明,在这种情况下,消息会发生什么情况

是的,重新声明队列是个好主意

如果节点发生故障,则连接到该节点的所有使用者都将断开连接。每次消费者连接时,它都应该假定其队列不存在,因此,它需要在连接时激发
将队列声明为第一个请求

如果消费者发送
声明队列
请求,且队列
确实存在
,则:

  • 声明队列
    不会影响队列的 以任何方式发送消息。如果消息被持久化,它们将继续被持久化 在队列中

  • 在正常情况下(如果不更改队列的 属性)不会引发任何错误


如果节点拥有队列失效、队列失效、消息失效。您可以检查是否存在,然后决定是否声明。