<div class="gmail_quote"><div>Hi Matthew,</div><div><br></div><div>Thank you for the detailed explanation.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">
<br>
</div>The act of routing a message is that the channel in which the message<br>
has been publishes looks up the Pids of the queues to which the message<br>
is destined. It then sends the message to those Pids. Depending on the<br>
publish mode (e.g. presence or otherwise of flags such as immediate or<br>
mandatory) it may or may not be important as to whether processes<br>
corresponding to those Pids are still alive.<br>
<br>
Whilst you can use mandatory to ensure that a message makes it to at<br>
least one queue, and whilst sending a message to an exchange that<br>
doesn&#39;t exist will cause a channel error, you can not assert that a<br>
publish message went to the &quot;correct&quot; number of queues: it always goes<br>
to the correct number of queues as determined at the point of routing.<br>
Thus the 0-or-some that mandatory gives you is the best you can hope<br>
for, generally, without significant additional changes to AMQP.<br><br></blockquote><div><br></div><div>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.</div>
<div><br></div><div>-J</div></div>