不用担心:您可以让您的消费者重新连接到群集 重新创建队列,对吗?只有队列不是最初的 明显耐用。如果重新创建的队列标记为持久, 从另一个节点重新声明它们会让你变得丑陋404 NOT_FOUND错误。 这可以确保该队列中的消息 将故障节点还原到群集时,失败的节点不会消失。 将特定队列名称返回到群集的唯一方法是 实际上还原失败的节点。但如果您的消费者尝试排队 重新创造不再持久,重新开始将会成功 你已准备好重新绑定它们并保持卡车运输。
在作者说,持久队列不能重新申报因为没有丢失的数据,如何理解这一点?
答案 0 :(得分:1)
问题在于RabbitMQ保留已发布消息的位置。如果在节点A中声明队列,则队列消息将存在于该节点中。复制的是队列元数据,即队列属性,但不是消息。因此,如果节点A死亡,那么在该节点中,您将获得发布到该队列的消息。
所以,现在让我们转到节点B并重新声明该队列,也就像在节点A中那样持久。如果允许该过程,那么您将丢失来自节点B的所有消息,因为经纪人会认为队列存在于节点B中。