<html><body bgcolor="#FFFFFF"><div><br><br><div><br></div></div><div><br>On 24 Jun 2011, at 18:33, Elias Levy &lt;<a href="mailto:fearsome.lucidity@gmail.com">fearsome.lucidity@gmail.com</a>&gt; wrote:<br><br></div><div></div><blockquote type="cite"><div><div class="gmail_quote">On Wed, Jun 22, 2011 at 1:15 AM, Rob Harrop <span dir="ltr">&lt;<a href="mailto:rob@rabbitmq.com"><a href="mailto:rob@rabbitmq.com">rob@rabbitmq.com</a></a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br></div>
When there is a consumer ready to receive the message, the message will only be written to disk if:<br>
<br>
1. The queue is durable<br>
2. The message is peristent<br>
3. Automatic ack is disabled</blockquote><div><br></div><div>Rob,</div><div><br></div><div>Thanks for your response. &nbsp;I was afraid that might be the case. &nbsp;That said, I've read with interest the discussion on the upcoming HA queue feature. &nbsp;It's exactly what we are looking for. &nbsp;Hopefully it will be release in not too long a time.</div></div></div></blockquote><div><br></div>HA queues will be in the next major release.<div><br><blockquote type="cite"><div><div class="gmail_quote">
<div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
You can use publisher confirms to allow your application code to know when a message has successfully been routed or when it has been lost.<br>
<br>
See: <a href="http://www.rabbitmq.com/extensions.html#confirms" target="_blank"><a href="http://www.rabbitmq.com/">http://www.rabbitmq.com/</a><u></u>extensions.html#confirms</a></blockquote><div><br></div><div>Alas, I believe, publisher confirms do not solve the problem. As I stated, I expect only a subset of the messages published to the topic exchange to have matching bindings. &nbsp;Most messages will not be routed anywhere. &nbsp;Publisher confirms will return basic.ack for such messages. &nbsp;That is all well and good under normal conditions. &nbsp;</div>
<div><br></div><div>But if there is a node with a queue with a binding that matches the message, and that node goes down, then it is my understanding that the rest of the cluster will discard the binding since the queue is no longer reachable. &nbsp;If that is the case, then publisher confirms will return a basic.ack rather than a basic.nack. &nbsp;Thus the publisher will not know that there was a queue with a binding that matched the message, but its just not available at this time.</div>
<div><br></div><div>Is my understanding incorrect?</div></div></div></blockquote><div><br></div>Well, it's quite subtle. If the message was routed when the queue was up, a back is sent if the queue goes down before the message can be written to disk.</div><div><br></div><div>If the binding has been removed due to queue down then no nack will be sent.</div><div><br></div><div>Are you trying to ensure that a given message reaches a known set of queues?<br><blockquote type="cite"><div><div class="gmail_quote"><div><br></div><div>This becomes less of an issue once the HA queues feature is shipped, as I configure the cluster the deliver the message to a queue even in the face a configurable number of nodes being down.</div>
<div><br></div><div>Elias Levy</div><div><br></div></div>
</div></blockquote></div></body></html>