此时我已经阅读了很多帖子和博客,我仍然不确定如何正确地聚类我的2个RabbitMQ节点。
我已阅读RabbitMQ群集指南:http://www.rabbitmq.com/clustering.html
我在API指南中发现了一个神秘的ClusterId,但没有解释如何首先获得该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中获得这种行为?
由于
答案 0 :(得分:5)
我正在使用HAProxy进行兔子群集节点之间的故障转移和负载平衡,同样在.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
对此博文http://www.joshdevins.net/2010/04/16/rabbitmq-ha-testing-with-haproxy/
的赞誉