[rabbitmq-discuss] Understanding RabbitMQ clustering

Jon Brisbin jon.brisbin at npcinternational.com
Fri Oct 29 14:42:37 BST 2010

On Oct 29, 2010, at 8:31 AM, Kshitiz Garg wrote:

> Should I refer to "RabbitMQ High Availability Guide" for setting up a
> system like yours?

It's certainly a good idea to read that guide. But I'm using an intentionally simplistic setup that follows the transcript here:


> does "haproxy" automatically decides the routing of
> the message depending on the availability of rabbitMQ instances
> sitting behind this ?

Sort of. HAProxy is a TCP/IP "traffic cop". It knows nothing about the contents of the packets it proxies. It simply knows whether or not any of the configured backends is alive and able to receive data. 

Maybe a better way to say it is that it decides the routing of the TCP traffic to the broker. It knows nothing about messages.


I'm also using a "best effort" approach. I'm not going to get my britches in a wrinkle if my broker goes down for a few minutes (or a few hours ;) until I get it fixed. I recognize others don't have that luxury.


> Regards,
> Kshitiz
> On Fri, Oct 29, 2010 at 6:39 PM, Jon Brisbin
> <jon.brisbin at npcinternational.com> wrote:
>> Do you want failover or clustering (or both)?
>> I use both. I have haproxy as a TCP proxy that sits in front of the RabbitMQ servers and acts as a failover and load balancer mechanism.
>> Behind the proxy are clustered RabbitMQ instances, which means they use the standard RabbitMQ clustering mechanism and have the same queues, exchanges, and whatnot on each box.
>> I then use Spring AMQP to connect to the *proxy*, who decides which of the RabbitMQ instances I actually get connected to.
>> Jon Brisbin
>> Portal Webmaster
>> NPC International, Inc.
>> On Oct 29, 2010, at 1:27 AM, Kshitiz Garg wrote:
>> Hi,
>> I have just started working with RabbitMQ for my cloud messaging/eventing application. The proof of concept worked well with rabbitMQ and Spring AMQP. Now, I want to start preparing for scalability.
>> I am able to setup a rabbitMQ cluster with 2 rabbitMQs installed on 2 separate machines. Now I want to know what is achieved by "clustering" in terms of rabbitMQ.
>> My spring amqp template has been given a connection Factory like this:
>>     <!-- RabbitMQ configurations -->
>>     <!-- Define a connectionFactory -->
>>     <bean id="connectionFactory"
>>         class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">
>>         <constructor-arg value="localhost" />
>>         <property name="username" value="guest" />
>>         <property name="password" value="guest" />
>>     </bean>
>>     <!-- Configure the admin class -->
>>     <bean id="amqpAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin">
>>         <constructor-arg ref="connectionFactory" />
>>     </bean>
>> Here I have specified localhost, so now, if I send a amqp message through rabbitMQ and this localhost broker is not up, will that message go through its cluster node automatically ?
>> If that's the case, then what do we mean by high availability?
>> Thanks,
>> Kshitiz Garg
>> _______________________________________________
>> rabbitmq-discuss mailing list
>> rabbitmq-discuss at lists.rabbitmq.com
>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss

Jon Brisbin
Portal Webmaster
NPC International, Inc.

More information about the rabbitmq-discuss mailing list