RabbitMQ集群w / .Net客户端

时间:2011-05-23 19:08:11

标签: .net cluster-computing rabbitmq

此时我已经阅读了很多帖子和博客,我仍然不确定如何正确地聚类我的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中获得这种行为?

由于

1 个答案:

答案 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/

的赞誉