<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">If the connection drops and there are un-acked messages, Rabbit will reject them all (returning them to a "ready" state). If you set up your supervision tree such that an error while working on a message takes out the process that was talking to Rabbit, this can be convenient.</div><div class=""><br class=""></div><div class="">If your Rabbit consumer is just handing off messages and you don't plan for it to die itself, you will need to track messages you've handed off and explicitly reject those that went to a dead consumer.</div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On May 12, 2017, at 9:31 AM, Kareem Hepburn <<a href="mailto:kareemgan@gmail.com" class="">kareemgan@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Gotcha. Thanks! I was using Reject earlier but I guess Ack is sufficient to what I need to do.</div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, May 12, 2017 at 8:24 AM, Bastien CHAMAGNE <span dir="ltr" class=""><<a href="mailto:bchamagne@idmog.com" target="_blank" class="">bchamagne@idmog.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000" class=""><p class="">Once a consumer reads a message, that message goes from "READY"
to "UNACKED". It's not deleted that fast! As long as it's in
"UNACKED" state, it will not be delivered to anyone else. Then
once your consumer have finished processing the message, it must
send an ACK that will remove the message from rabbitMQ. If your
consumer crashes midway through, there will be no ACK and rabbitMQ
knows that it can be redistributed (message is "READY" again). <br class="">
</p><div class=""><div class="h5">
<br class="">
<div class="m_139246108100739160moz-cite-prefix">On 12/05/2017 15:16, Kareem Hepburn
wrote:<br class="">
</div>
<blockquote type="cite" class="">
<div dir="ltr" class="">What about reject? The thing is, if there are
multiple nodes of a worker that's consuming the message I want
it that if a worker already read the message, it will not be
possible to for it to be delivered to the other consumers so I
am guessing ack will do this for me and reject will requeue it
if my process fails.
<div class=""><br class="">
</div>
<div class="">Am I correct on this?</div>
</div>
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Fri, May 12, 2017 at 7:56 AM,
Bastien CHAMAGNE <span dir="ltr" class=""><<a href="mailto:bchamagne@idmog.com" target="_blank" class="">bchamagne@idmog.com</a>></span> wrote:<br class="">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000" class=""><p class="">Hi Kareem, you should ack only when your application
have processed the message. See <a class="m_139246108100739160m_-8435364828102131017moz-txt-link-freetext" href="https://www.rabbitmq.com/confirms.html" target="_blank">https://www.rabbitmq.com/confi<wbr class="">rms.html</a></p>
<div class="">
<div class="m_139246108100739160h5"><p class=""><br class="">
</p>
<div class="m_139246108100739160m_-8435364828102131017moz-cite-prefix">On
12/05/2017 13:55, Kareem Hepburn wrote:<br class="">
</div>
</div>
</div>
<blockquote type="cite" class="">
<div class="">
<div class="m_139246108100739160h5">
<div dir="ltr" class="">Is it possible with RabbitMQ to
consume a message without it being deleted and be
deleted manually?
<div class=""><br class="">
</div>
<div class="">Because let's say I consumed a message and
started to process it and half way through
processing it the application fails. I want to
be able to re-process that message again. Is it
possible to not delete the message and delete it
manually after my process has successfully
completed?</div>
<div class=""><br class="">
</div>
<div class="">To avoid duplication, I plan to use a
secondary database, either Redis or Memcache to
store the ID of the message to ensure that it's
not being processed by more than one
application.</div>
<div class=""><br class="">
</div>
<div class="">Thanks!</div>
</div></div></div></blockquote></div></blockquote></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div><br class=""></body></html>