On Sat, Feb 12, 2011 at 04:45, Max Bridgewater wrote:
Hi,
It's very likely that I don't really understand the concept of
exchange. So please bear with me. Say I bind the queue with routing
key "WashingtonPost" to the topic exchange "politics" using pattern
"africa.egypt.#". Now if we get rid of the concept of exchange.
Wouldn't this be equivalent to binding the "WashingtonPost" to the
pattern "politics.africa.egypt.#"?
What am I missing that makes the exchange paradigm so necessary in AMQP?
Thanks,
Max.
Although I can't provide a direct answer to your question, I would
say that at least from a security point of view, exchanges are very
useful as they allow me to explicitly allow / disallow which users can
either post or consume messages. (It is impossible to use ACL's on
routing keys.)
For example if I would to replace D-Bus with AMQP, only anyone
could subscribe to the "os.control" exchange (both the control daemon
but also interested users / applications), but only an OS operator
could publish messages to that particular exchange to for example
reboot the OS.
Further more, exchanges determine how routing is done -- some
based on the routing key, others based on headers -- and in recent
versions of RabbitMQ (2.2.0?) you can bind exchanges to exchanges,
thus offering you a poor-man AND / OR operators.
I hope others could provide you with a better / more to the point answer.
Ciprian.