[rabbitmq-discuss] Round-robin queue failover

Kyle Schaffrick kyle at raidi.us
Wed Oct 21 21:06:20 BST 2009


On Tue, 20 Oct 2009 06:53:17 +0100
Matthias Radestock <matthias at lshift.net> wrote:

> Sebastian,
> 
> Sebastian wrote:
> > Now I have come across this [1] blog-post by Ilya Grigorik which  
> > says:  "Assign two identically named queues to an exchange and the  
> > broker will automatically round-robin the messages". So my  
> > understanding is that I could just create identical queues on
> > every node, and the broker will take care of the rest: if one node
> > goes down, messages will just be spread over the other queues/nodes.
> > Is this supported by rabbitmq? I've looked around in the amqp
> > specs and documentation, but couldn't find anything related.
> > 
> > [1]
> > http://www.igvita.com/2009/10/08/advanced-messaging-routing-with-amqp/
> 
> That part of the article is wrong. Exchanges route messages to all
> the queues bound with a binding that matches the message. There is no 
> round-robining going on; that only happens for delivering messages to 
> multiple consumers of the same queue.
> 
> Regards,
> 
> Matthias.
> 

The author of the article seems to be confusing "declaring and consuming
from the same queue from two different places" with "creating two
identically-named queues" which (if I understand correctly) is not
possible, since declaration is idempotent. I would guess that's why the
operation is called "declare" and not "create".

If you reword it to remove the misunderstanding, then the statement
seems correct. Attempting to create two identically-named queues will
result in declaring the same queue twice; the two consumers then
consuming from that queue will see load-balancing behavior.

-Kyle




More information about the rabbitmq-discuss mailing list