[rabbitmq-discuss] Clustering Internals

Jason J. W. Williams jasonjwwilliams at gmail.com
Wed Mar 23 00:06:43 GMT 2011

Hi Matthew,

Thank you for the detailed explanation.

> The act of routing a message is that the channel in which the message
> has been publishes looks up the Pids of the queues to which the message
> is destined. It then sends the message to those Pids. Depending on the
> publish mode (e.g. presence or otherwise of flags such as immediate or
> mandatory) it may or may not be important as to whether processes
> corresponding to those Pids are still alive.
> Whilst you can use mandatory to ensure that a message makes it to at
> least one queue, and whilst sending a message to an exchange that
> doesn't exist will cause a channel error, you can not assert that a
> publish message went to the "correct" number of queues: it always goes
> to the correct number of queues as determined at the point of routing.
> Thus the 0-or-some that mandatory gives you is the best you can hope
> for, generally, without significant additional changes to AMQP.
So there really are no guarantees as to the contents of an exchange on
failure of a node. You can just be sure that the exchange will exist as
expected on the other nodes.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110322/4f1c09eb/attachment.htm>

More information about the rabbitmq-discuss mailing list