RabbitMQ客户端连接到多个主机

本文关键字:主机 客户端 连接 RabbitMQ | 更新日期: 2023-09-27 17:57:49

拥有多台RabbiMQ服务器主机(集群)的主要目标是否有任何最佳实践可以实现拥有多个RabbitMQ主机,并在前一个连接关闭的情况下重新连接到下一个主机。

教程说:

客户端可以正常连接到集群中的任何节点。如果节点应该失败,并且集群的其余部分仍然存在,然后客户端应该注意到关闭的连接,并且应该能够重新连接到某个幸存的集群成员。一般来说建议将节点主机名或IP地址烘焙到客户端应用

如何从客户端实现?

RabbitMQ客户端连接到多个主机

解决这个典型问题的一种方法是为集群(如HAPROXY、cross-road..或其他)配置负载均衡器(在roud-robin配置中就足够了)。

客户端--->ip负载均衡器--brokerS

通过这种方式,您可以在客户端连接中仅使用负载平衡器IP。

为了获得更大的灵活性,您可以添加绑定到负载平衡器的DNS(本地DNS),这样您也可以在不更改客户端配置的情况下更改平衡器。

客户端--->-负载平衡器DNSNAME--代理

如果一个客户端失去连接,你必须将其重新连接到同一个ip或dns。

您应该有一个c#的HA客户端,就像java的HA客户端一样,或者简单地管理连接关闭事件。

也就是说,如果你有一个小型的静态集群,你可以使用客户端的IP。

从客户端(如果您只想处理断开连接):

connection = connection = factory.CreateConnection();
channel = connection.CreateModel();
.......
connection.ConnectionShutdown += Connection_ConnectionShutdown;
 void Connection_ConnectionShutdown(IConnection connection, ShutdownEventArgs reason)
{
    Console.WriteLine("connection_ConnectionShutdown " + reason.ToString());
    Reconnect_client();
}