[rabbitmq-discuss] (no subject)

Michael Klishin michael.s.klishin at gmail.com
Mon Jun 3 13:01:53 BST 2013


2013/6/3 Tamir Agamy <tamiragamy at gmail.com>

> or is the information saved at the
> server and the exchange has to inquire the server whenever it gets a
> message from the producer?
>

Tamir,

"the exchange" and "the server" are not separate entities, neither they are
separate processes.

Exchanges are simply names for routing tables. For all intents and purposes
you can assume that routing happens inside the RabbitMQ node
your client publishes to.

Discovering all bindings is roughly equivalent to the following SQL query:

SELECT * FROM bindings WHERE vhost = … AND exchange = …;

Mnesia, the database RabbitMQ uses for metadata (including bindings)
replicates the data between nodes
as well as RAM and disk. The query is also a good candidate for indexing
and caching.

It doesn't get much better from the data locality and query efficiency
perspective and most exchanges
have few bindings.At the same time, it relieves all clients from having to
know the exact routing
topology, synchronize it, deal with network splits, etc.
-- 
MK

http://github.com/michaelklishin
http://twitter.com/michaelklishin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20130603/78ec477b/attachment.htm>


More information about the rabbitmq-discuss mailing list