RabbitMQ群集节点故障
我有一个RabbitMQ集群(不含HA),它的节点位于多个实例中。从文档中,我了解到的是,在集群模式下,队列不被镜像,而是由声明队列的节点拥有 所以,现在的问题是,当拥有队列的节点停机时会发生什么?如果我错了,请纠正我的错误,因为队列没有镜像,客户端应用程序将抛出丢失的队列 我们是否应该编写逻辑来确定如果节点停机,队列必须重新声明,在这种情况下,消息会发生什么情况 所以,现在的问题是,当拥有队列的节点停机时会发生什么 从: 当RabbitMQ退出或崩溃时,它将忘记队列和消息,除非您告诉它不要这样做。要确保消息不会丢失,需要做两件事:我们需要将队列和消息都标记为持久消息 下一个问题: 我们是否应该编写逻辑来确定如果节点停机,队列必须重新声明,在这种情况下,消息会发生什么情况 是的,重新声明队列是个好主意 如果节点发生故障,则连接到该节点的所有使用者都将断开连接。每次消费者连接时,它都应该假定其队列不存在,因此,它需要在连接时激发RabbitMQ群集节点故障,rabbitmq,Rabbitmq,我有一个RabbitMQ集群(不含HA),它的节点位于多个实例中。从文档中,我了解到的是,在集群模式下,队列不被镜像,而是由声明队列的节点拥有 所以,现在的问题是,当拥有队列的节点停机时会发生什么?如果我错了,请纠正我的错误,因为队列没有镜像,客户端应用程序将抛出丢失的队列 我们是否应该编写逻辑来确定如果节点停机,队列必须重新声明,在这种情况下,消息会发生什么情况 所以,现在的问题是,当拥有队列的节点停机时会发生什么 从: 当RabbitMQ退出或崩溃时,它将忘记队列和消息,除非您告诉它不要这样
将队列声明为第一个请求
如果消费者发送声明队列
请求,且队列确实存在
,则:
声明队列
不会影响队列的
以任何方式发送消息。如果消息被持久化,它们将继续被持久化
在队列中
- 在正常情况下(如果不更改队列的
属性)不会引发任何错误
如果节点拥有队列失效、队列失效、消息失效。您可以检查是否存在,然后决定是否声明。