[rabbitmq-discuss] How list exchanges managed by a given node ?

Simon MacMullen simon at rabbitmq.com
Fri Sep 6 11:39:25 BST 2013


On 06/09/2013 11:28AM, Vincent Barat wrote:
>
> Let say an exchange was created by a client connection made on node 1 at
> a time. Then, a producer is connected on node 2 and a consumer is
> connected also on node 2 (with the  consumer's queue also on node 2)
> then all the network traffic will follow this path:
>
> producer -> node 2 -> node 1 -> node2 -> consumer
>
> instead of
>
> producer -> node 2 -> consumer
>
> this have a big impact on network and CPU

I really don't think that's the case. Exchanges are routing logic that 
runs in the publishing channel process. The exchange, bindings and 
queues are looked up in Mnesia beforehand, but Mnesia distributes copies 
to all nodes so it's just a memory lookup. Then the exchange does some 
routing logic locally. That's it. Honest :-)

[NB: the above is true for the built-in exchange types, it's not 
impossible to write an exchange type where routing logic gets made in a 
single process somewhere. But we haven't done that.]

Cheers, Simon

-- 
Simon MacMullen
RabbitMQ, Pivotal


More information about the rabbitmq-discuss mailing list