Interesting approach, thanks Simon<br><br><div class="gmail_quote">On Mon, Mar 19, 2012 at 1:36 PM, Simon MacMullen <span dir="ltr">&lt;<a href="mailto:simon@rabbitmq.com">simon@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">
<div class="im">On 19/03/12 12:24, Brendan Hay wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Would it be possible to describe in more (technical/erlangy) detail how<br>
the new flow-control mechanism works?<br>
</blockquote>
<br></div>
There&#39;s a few words at:<br>
<br>
<a href="http://www.rabbitmq.com/memory.html" target="_blank">http://www.rabbitmq.com/<u></u>memory.html</a><br>
<br>
under &quot;Per-Connection Flow Control&quot;, although that might not count as &quot;technical/erlangy&quot;. In terms of implementation:<br>
<br>
* A process that forwards AMQP messages on inside the broker is issued credit for each process it sends messages to.<br>
<br>
* The receiving process will issue more credit as it processes these messages.<br>
<br>
* If a process which receives messages from inside the broker runs out of credit, it will in turn stop issuing credit until it gets more.<br>
<br>
* If a process which receives messages from the network runs out of credit, it will stop reading from its socket until it gets more.<br>
<br>
* See the &#39;credit_flow&#39; module (and its call sites) for more details.<br>
<br>
Since all the processes in the chain need to opt in to this new mechanism for it to work, only the most common paths do flow control: messages published via AMQP and STOMP. Messages published via other direct client users (e.g. JSON-RPC or management) and messages which arise spontaneously in the broker (dead lettering, log and trace messages) are not flow controlled. Indeed it&#39;s hard to see how they could be.<br>

<br>
Cheers, Simon<div class="HOEnZb"><div class="h5"><br>
<br>
-- <br>
Simon MacMullen<br>
RabbitMQ, VMware<br>
</div></div></blockquote></div><br>