<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>Hi,</div><div><br></div><div>A direct exchange takes into account the routing key before delivering it to a queue. Actually it retrieves a list of queues bound to the exchange based on the routing key used to publish the message.</div><div><br></div><div>A fanout exchange ignores routing keys. It just retrieves the list of queues bound to the exchange.</div><div><br></div><div>A topic exchange takes into account the routing key. Same as with the direct exchange but in this case routing key matches are more complex than with the direct matching. See here:&nbsp;<a href="http://www.rabbitmq.com/blog/2010/09/14/very-fast-and-scalable-topic-routing-part-1/">http://www.rabbitmq.com/blog/2010/09/14/very-fast-and-scalable-topic-routing-part-1/</a></div><div><br></div><div>Take a look at the descriptions here:&nbsp;<a href="http://www.rabbitmq.com/tutorials/amqp-concepts.html">http://www.rabbitmq.com/tutorials/amqp-concepts.html</a></div><div><br></div><div>RabbitMQ uses this version of the protocol:&nbsp;<a href="http://www.rabbitmq.com/amqp-0-9-1-quickref.html">http://www.rabbitmq.com/amqp-0-9-1-quickref.html</a></div><div><br></div><div>Routing logic starts here:&nbsp;<a href="http://hg.rabbitmq.com/rabbitmq-server/file/a668b91616ba/src/rabbit_channel.erl#l617">http://hg.rabbitmq.com/rabbitmq-server/file/a668b91616ba/src/rabbit_channel.erl#l617</a></div><div><br></div><div>I think this material is more than enough to start your research and continue from there.</div><div><br></div><div>Regards,</div><div><br></div><div>Alvaro</div></div></body></html>