[rabbitmq-discuss] RabbitMQ cluster w/ .Net client

Yann Luppo yluppo at leads360.com
Thu May 26 17:57:38 BST 2011


To follow up on the clustering question, is it safe to assume the
following scenario would work as expected?

* 2 rabbitMQ nodes clustered, rabbit1 and rabbit2
* Client A connects to rabbit1, creates a new queue QueueX and pushes
messages at regular interval to that queue
* Client B connects to rabbit2 to consume messages from QueueX. Since
servers are clustered rabbit2 knows how to route the messages from
QueueX on rabbit1 to Client B.
* Client C connects to rabbit2 and pushes messages to QueueX and again
rabbit2 knows how to route the messages to QueueX.

Here is my understanding and I'd like it corrected if it's wrong in
anyway please: 

QueueX really only exists on the server it's been created but other
rabbitmq nodes on that cluster know how to communicate to and from that
queue.

Is that an accurate picture of rabbitmq clustering?

Thank you,
Yann

-----Original Message-----
From: rabbitmq-discuss-bounces at lists.rabbitmq.com
[mailto:rabbitmq-discuss-bounces at lists.rabbitmq.com] On Behalf Of Simon
MacMullen
Sent: Wednesday, May 25, 2011 6:14 AM
To: rabbitmq-discuss at lists.rabbitmq.com
Subject: Re: [rabbitmq-discuss] RabbitMQ cluster w/ .Net client

On 23/05/11 20:15, Yann Luppo wrote:
> Hi,
>
> I've read many posts and blogs at this point and I'm still not sure
> about how to cluster correctly my 2 RabbitMQ nodes.
>
> I've read the RabbitMQ clustering
> guide:http://www.rabbitmq.com/clustering.html
>
> I found out about a mysterious ClusterId in the API guide, with no
> explanation on how to get that Id in the first
>
place:http://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v2.4.1/rab
bitmq-dotnet-client-2.4.1-api-guide.pdf

The ClusterId is not documented because it doesn't do anything in 
RabbitMQ. In fact it was never well defined and was deprecated in 0-9-1.

I'm not sure what it's still doing in that guide; I've filed a bug.

> Learned in that StackOverflow post that basically I'd need my clients
to
> be aware of each node in the cluster and code for failover
> scenario:rabbitmq HA cluster
> <http://stackoverflow.com/questions/4140653/rabbitmq-ha-cluster>
>
> Now... The behavior I'd like to have is something a little more
> transparent if possible. Where I would potentially use that
"ClusterId"
> on the client to make the consumer cluster aware and then hopefully
the
> library knows to randomly connect to either node to grab messages.
>
> Granted I know a message can only be on one server at a time, so I'm
> hoping for some round robin magic from the DotNet client library that
> would also handle fail over situations.

I'm afraid that all the client libraries just know how to connect to the

host you give them.

> Basically I was hoping for the whole thing to scale without changing
any
> code or configuration on the publisher or consumer apps.
>
> Now based on my readings it doesn't quite work like that... unless I
> missed something. If my knowledge is up to date and I have to code all
> that cluster aware business, then... why does RabbitMQ have a cluster
> feature in the first place? How is it used?

Clustering exists to:

* Allow you to get higher throughput than a single node can manage.

* In the near future, allow queues to exist on more than one node, and 
survive node failure.

Cheers, Simon

-- 
Simon MacMullen
Staff Engineer, RabbitMQ
SpringSource, a division of VMware

_______________________________________________
rabbitmq-discuss mailing list
rabbitmq-discuss at lists.rabbitmq.com
https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss


More information about the rabbitmq-discuss mailing list