RabbitMQ集群w/.Net客户端
我已经阅读了很多文章和博客,但我仍然不确定如何正确地集群2个RabbitMQ节点。RabbitMQ集群w/.Net客户端
我读过的RabbitMQ集群指南:http://www.rabbitmq.com/clustering.html
我发现了关于API指南中一个神秘的群ID,对如何获取标识摆在首位没有解释:http://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v2.4.1/rabbitmq-dotnet-client-2.4.1-api-guide.pdf
教训在那StackOverflow帖子,基本上我需要我的客户端知道群集中的每个节点和故障转移场景代码:rabbitmq HA cluster
现在...我想要的行为是更透明一点如果可能的话。在那里我可能会使用客户端上的“ClusterId”来使消费者集群感知,然后希望库知道随机连接到任一节点来获取消息。
授予我知道消息一次只能在一台服务器上,所以我希望DotNet客户端库中的一些循环法术可以处理故障转移情况。
我还希望从发布者的角度来看,交换机会循环分发消息到集群中的各个节点。交换机也可以集群感知并处理故障转移情况。
现在基于我的阅读,它不像那样工作...除非我错过了一些东西。 如果我的知识是最新的,并且我必须编写所有可识别群集的业务,那么......为什么RabbitMQ首先具有群集功能?它是如何使用的?
有没有办法让RabbitMQ没有编码那么多的那种行为?
感谢
我使用HAProxy的故障切换和负载群集节点之间平衡的RabbitMQ的,也对异常.NET客户端,当节点出现故障时,您需要手动重新连接客户端。
这是两个节点群集的HAProxy配置,节点在15672和25672端口上运行。 客户端连接到5672端口。
global
daemon
log 127.0.0.1 alert
log 127.0.0.1 alert debug
defaults
log global
mode http
option dontlognull
option redispatch
retries 3
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen rabbitmq 0.0.0.0:5672
mode tcp
balance roundrobin
option tcpka
server rabbit01 127.0.0.1:25672 check inter 5000 downinter 500
server rabbit02 127.0.0.1:15672 check inter 5000 backup
CUDOS到这个博客帖子http://www.joshdevins.net/2010/04/16/rabbitmq-ha-testing-with-haproxy/
我已经按照你分享的链接。但该请求不是分布在两台服务器上。消息仅在一台服务器上发布。 – 2012-05-11 07:38:37
我认为发布的消息不会被分发,只是用于故障转移,例如当一个主要经纪人失败的情况下,客户端将重新连接到第二个经纪人 – Troydm 2012-05-11 18:37:05
我已经通过stackoverflow发布了问题。检查这个http://stackoverflow.com/questions/10547523/configure-haproxy-for-rabbitmq – 2012-05-12 04:02:13
我感到困惑的RabbitMQ集群。我现在对Erlang和RabbitMq有了更好的理解,以及为什么队列没有在集群中复制,以及这对于可伸缩性没有影响,这是我的主要目标。所有节点都知道每个队列的存在位置,并转发消息。因此,除非目标是高可用性,否则不需要复制相同的队列,但我不是这种情况。感谢您的帮助Troydm。 – Lancelot 2011-06-24 15:57:36