我觉得我好像漏掉了一些非常基本的东西。
我可以用三个节点(rabbit1、rabbit2和rabbit3)启动一个RabbitMQ集群,而不会出现任何问题。然后,当我开始编写我的微服务时,似乎每个客户端只连接到一个rabbit实例。因此,假设我的所有服务都连接到rabbit1。
如果rabbit1宕机,我的整个基础架构是否会爆炸?这些服务有办法切换到另一个rabbit节点吗?似乎他们不能,在这种情况下,有一个集群的意义是什么?
如果有人遇到这种情况,并且像我一样难以在文档中找到这个问题,RabbitMQ不会管理客户端连接自动恢复。从 文件:
一些客户端库提供了一个从网络连接失败中自动恢复的机制。其他客户端可能认为网络故障恢复是应用程序的责任。
所以首先检查你的库是否提供了自动恢复功能,如果没有,你就必须自己实现。