<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2013/6/3 Tamir Agamy <span dir="ltr">&lt;<a href="mailto:tamiragamy@gmail.com" target="_blank">tamiragamy@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>or is the information saved at the<br>
server and the exchange has to inquire the server whenever it gets a message from the producer?</div></blockquote></div><br>Tamir,<br><br clear="all"><div>&quot;the exchange&quot; and &quot;the server&quot; are not separate entities, neither they are separate processes.</div>

<div><br></div><div>Exchanges are simply names for routing tables. For all intents and purposes you can assume that routing happens inside the RabbitMQ node</div><div>your client publishes to.</div><div><br></div><div>Discovering all bindings is roughly equivalent to the following SQL query:</div>

<div><br></div><div>SELECT * FROM bindings WHERE vhost = … AND exchange = …;</div><div><br></div><div>Mnesia, the database RabbitMQ uses for metadata (including bindings) replicates the data between nodes</div><div>as well as RAM and disk. The query is also a good candidate for indexing and caching.</div>

<div><br></div><div>It doesn&#39;t get much better from the data locality and query efficiency perspective and most exchanges</div><div>have few bindings.At the same time, it relieves all clients from having to know the exact routing</div>

<div>topology, synchronize it, deal with network splits, etc.</div>-- <br>MK<br><br><a href="http://github.com/michaelklishin" target="_blank">http://github.com/michaelklishin</a><br><a href="http://twitter.com/michaelklishin" target="_blank">http://twitter.com/michaelklishin</a><br>


</div></div>