<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 4, 2013 at 9:43 AM, Vasiliy Boulytchev <span dir="ltr">&lt;<a href="mailto:vasiliyb@gmail.com" target="_blank">vasiliyb@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Folks,<div>  Please correct me if I am wrong...  After each message is published to an exchange, the client receives a confirmation that the message was received.  </div>
</div></blockquote><div><br></div><div>Not by default.  If you use an AMQP transaction or the RabbitMQ &quot;publisher confirms&quot; extension, than you can get this sort of notification, synchronously in the case of the former, and asynchronously in the case of the latter.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Does this message get sent by RabbitMQ server after this message has been send to all nodes in the cluster?</div>
</div></blockquote><div><br></div><div>It depends.  For example if you publish to an exchange with no bound queues, your message goes nowhere.  Otherwise it will be routed into bound queues according to its routing key, the exchange type, and the binding keys used.</div>
<div><br></div><div>By default a queue exists, backed by a single Erlang process, on a single node in the cluster.  If you&#39;re using mirrored queues, then other replicas of the queue will exist, on other nodes, and in that case the message will be replicated into the mirrors.  The publish will be informed only if he&#39;s using one of the above mechanisms (transactions or publisher confirms) as for mirrored queues, the scopes of these mechanisms span all mirrors of the queue.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>  Does this message get sent when the message has been written to disk?</div></div></blockquote>
<div><br></div><div>If you published your message with the persistence flag, then the operation is not considered successfully done until the queue persists the message, or in the case of mirroring, all mirrors do so.  The confirmation is sent only when what you asked for is done.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>  Does this message get sent after a shovel policy has been applied?</div></div></blockquote>
<div><br></div><div>I&#39;m not sure what you mean by shovel &quot;policy&quot; since in recent Rabbits that term has a specific meaning.</div><div><br></div><div>But shovel works by having an Erlang process within the source broker consume out of a queue bound to the source exchange and republish via AMQP to an exchange on a remote broker.  The scope of transaction or confirm gets you only as far as the hidden queue from which shovel is pulling for republication and tells the initial publisher nothing about what the shovel did or didn&#39;t do afterward.</div>
<div><br></div><div>Jerry</div><div><br></div></div></div></div>