<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 29/07/13 13:40, Matthias Radestock
      wrote:<br>
    </div>
    <blockquote cite="mid:51F662A6.3060006@rabbitmq.com" type="cite">On
      29/07/13 13:30, Tom Anderson wrote:
      <br>
      <blockquote type="cite">On 26/07/13 23:32, Matthias Radestock
        wrote:
        <br>
        <blockquote type="cite">On 26/07/13 18:29, Tom Anderson wrote:
          <br>
          <blockquote type="cite">"The broker will confirm messages
            once:
            <br>
            [...]
            <br>
            * a transient message has reached all its queues
            <br>
            [...]
            <br>
            So, if i send a persistent message (delivery mode = 2) to a
            non-durable
            <br>
            exchange which routes to a non-durable queue, then i will
            only get a
            <br>
            confirmation once the message has been consumed from that
            queue, right?
            <br>
          </blockquote>
          <br>
          Wrong. The behaviour is described in the snippet you quoted
          above,
          <br>
          i.e. the message gets confirmed once it has reached all the
          queues it
          <br>
          was routed to.
          <br>
        </blockquote>
        <br>
        Okay. Just to clarify: the bit of the snippet i quoted that you
        quoted
        <br>
        says "a transient message". I understood that as specifically
        referring
        <br>
        to transient messages, not persistent ones, ie those sent with
        delivery
        <br>
        mode 1 rather than 2. I was asking about persistent messages.
        Are you
        <br>
        telling me that the behaviour for persistent messages is
        actually the
        <br>
        same as that specified for transient messages?
        <br>
      </blockquote>
      <br>
      Messages persistence requires the combination of
      <br>
      1) delivery_mode = 2
      <br>
      2) routing to a durable queue
      <br>
      <br>
      Condition #2 is not met in your case, so the message is not
      persisted, i.e. it is treated as a transient message.<br>
    </blockquote>
    <br>
    Aha. I didn't realise, that, thanks.<br>
    <br>
    What i'm looking for is a way to get some sort of feedback at the
    sender when a message has been acknowledged by the consumer. Given
    that transient messages are confirmed as soon as the message has
    reached the queue, and persistent messages are confirmed as soon as
    they are written to disk, am i right in concluding that there is no
    way to do this with confirms? Is there any other mechanism in
    RabbitMQ that might let me do this?<br>
    <br>
    My real goal here is to write a test for an application of ours, to
    assert that it is only acknowledging messages after it has
    successfully processed them, and not immediately on receipt. If
    anyone has any thoughts on how i might be able to do that, i would
    be very excited to hear them!<br>
    <br>
    Thanks,<br>
    tom<br>
    <br>
    <div class="moz-signature">-- <br>
      <p>Tom Anderson | Developer | +44 20 7826 4312 | <a
          href="http://timgroup.com/">timgroup.com</a></p>
      <div style="color:DarkGrey; font-size: small;">
        <p>STATEMENT OF CONFIDENTIALITY: The information contained in
          this electronic message and any attachments to this message
          are intended for the exclusive use of the addressee(s) and may
          contain confidential or privileged information. If you are not
          the intended recipient, please notify Tom Anderson at TIM
          Group at <a class="moz-txt-link-abbreviated" href="mailto:tom.anderson@timgroup.com">tom.anderson@timgroup.com</a> and destroy all copies of
          this message and any attachments.</p>
        <p>TIM Group is the trading name for YouDevise Limited.
          YouDevise Limited is registered in England, No. 3331176.
          Registered office: 3 Copthall Avenue, London, EC2R 7BH.</p>
      </div>
    </div>
  </body>
</html>