<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>