<font face="trebuchet ms,sans-serif">Hi Alexis, I&#39;ve had to deal with the same situation as Matt describes in the past and in the end the scenarios in case of channel closure were:</font><div><ul><li><font face="&#39;trebuchet ms&#39;, sans-serif">discard messages delivered to the consumer but not yet dispatched to the application, assuming they will be redelivered</font></li>

<li><font face="&#39;trebuchet ms&#39;, sans-serif">dispatch them to the application and not bother acking them as acking wouldn&#39;t obviously succeed</font></li><li><font face="&#39;trebuchet ms&#39;, sans-serif">dispatch them to the application and try acking them anyway, catching errors that inevitably will be raised due to the channel being closed</font></li>

</ul><div><font face="&#39;trebuchet ms&#39;, sans-serif">Although it&#39;s not the cleanest solution I&#39;ve chosen the third one (assuming a sensible prefect-count value, as swallowing lots of ack errors would likely affect the application performance) for a couple of reasons - quite dependent on the context btw:</font></div>

<div><ul><li><font face="&#39;trebuchet ms&#39;, sans-serif">I wanted my application to see the messages the consumer had received as soon as possible, without waiting for them to be eventually redelivered</font></li><li>

<font face="&#39;trebuchet ms&#39;, sans-serif">Not treating the scenario in which messages are acked on a closed channel as a special case helped keep simplicity</font></li><li><font face="&#39;trebuchet ms&#39;, sans-serif">You have to deal with deduplication anyway compared to option 1 above (which may create the false assumption that you wouldn&#39;t have to do so in that case)</font></li>

</ul><div><font face="&#39;trebuchet ms&#39;, sans-serif">Simone</font></div></div><div><br><div class="gmail_quote">On Wed, Mar 7, 2012 at 21:25, Alexis Richardson <span dir="ltr">&lt;<a href="mailto:alexis@rabbitmq.com">alexis@rabbitmq.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Matt<br>
<br>
Could you achieve what you want by lifting &#39;ack&#39; to the application layer?<br>
<span class="HOEnZb"><font color="#888888"><br>
alexis<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Wed, Mar 7, 2012 at 8:20 PM, Simone Busoli &lt;<a href="mailto:simone.busoli@gmail.com">simone.busoli@gmail.com</a>&gt; wrote:<br>
&gt; Hi Matt, your understanding is correct, acknowledgements are meaningful only<br>
&gt; within the context of the same channel, therefore the answer to your last<br>
&gt; question is no.<br>
&gt; If the connection bounces or the channel closes for any other reasons you<br>
&gt; should not acknowledge the messages your consumer was delivered already and<br>
&gt; just assume they will be redelivered to the next consumer which will start<br>
&gt; consuming to the same queue.<br>
&gt;<br>
&gt; On Wed, Mar 7, 2012 at 21:00, Matt Pietrek &lt;<a href="mailto:mpietrek@skytap.com">mpietrek@skytap.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I thought I understood this topic clearly, but some recent experiences<br>
&gt;&gt; have me seeking more info, as I can&#39;t find this exact topic explicitly<br>
&gt;&gt; described.<br>
&gt;&gt;<br>
&gt;&gt; When a message is delivered on a particular connection/channel<br>
&gt;&gt; combination, can it ever be successfully acknowledged on a different<br>
&gt;&gt; connection?<br>
&gt;&gt;<br>
&gt;&gt; My current understanding is &quot;no&quot;.<br>
&gt;&gt;<br>
&gt;&gt; Some background: In our messaging layer, we want to hide the connection<br>
&gt;&gt; drops from the upper application layer. That is, if we try to use a<br>
&gt;&gt; previously working connection/channel, and it fails, we&#39;ll simply catch the<br>
&gt;&gt; exception and try to reconnect.<br>
&gt;&gt;<br>
&gt;&gt; So the question is, after the reconnect, should we even attempt to<br>
&gt;&gt; acknowledge messages read from the original connection?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; rabbitmq-discuss mailing list<br>
&gt;&gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt;&gt; <a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; rabbitmq-discuss mailing list<br>
&gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt; <a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt;<br>
</div></div></blockquote></div><br></div></div>