Exchange类型介绍
Exchange主要包含4种类型:Direct、Fanout、Topic和Header。
Direct Exchange
工作原理:
- 将一个Queue绑定到某个Direct Exchange上,并赋予该绑定一个Routing Key。
- 当一个携带着Routing Key的消息被发送给Direct Exchange时,Direct Exchange会将它路由给与绑定Queue时设置的Routing Key完全匹配的Queue。
路由规则:
Direct Exchange会将消息路由到Routing Key完全匹配的Queue中。
应用场景:
Direct Exchange常用于单播路由。
应用示例:
如上图所示,Message A将会发送到Queue 1和Queue 2中,Message B将会发送到Queue 3中。
Fanout Exchange
工作原理:
如果有N个Queue绑定了Fanout Exchange,当Fanout Exchange接收到一个消息时,会将它分别路由到这N个Queue中。Fanout Exchange是所有Exchange类型中转发消息最快的。
路由规则:
Fanout Exchange将消息路由到所有与其绑定的Queue中。
应用场景:
Fanout Exchange常用于广播消息。
应用示例:
如上图所示,Message A将会发送到Queue 1和Queue 2中。
Topic Exchange
工作原理:
- 将一个Queue绑定到某个Topic Exchange上,并赋予该绑定一个Routing Key,此Routing Key包含通配符。
- 当一个携带着Routing Key的消息被发送给Topic Exchange时,Topic Exchange会将Routing Key进行通配符匹配,如果匹配成功,则将它路由给对应的Queue。
Topic Exchange的通配符包括“*”和“#”,单词间通过“.”隔开,例如test.#。
- *表示一个单词。
- #表示零个、一个或者多个单词。
路由规则:
Topic Exchange会将Routing Key进行通配符匹配,然后将消息路由到匹配成功的Queue中。
应用场景:
Topic Exchange常用于多播路由。
应用示例:
如上图所示,Message A将会发送到Queue 1和Queue 2,Message B将会发送到Queue 1、Queue 2和Queue 3,Message C将会发送到Queue 3。
Header Exchange
工作原理:
- 将一个Queue绑定到某个Header Exchange上,并设置绑定属性键值对。
- 将消息发送给Header Exchange时,需要设置消息的Header属性键值对,Header Exchange根据消息Headers属性键值对和绑定属性键值对的匹配情况路由消息。
匹配算法由一个特殊的绑定属性键值对控制。该属性为“x-match”,它的取值如下:
- x-match=all,表示所有的消息Headers属性键值对和绑定属性键值对都匹配才会路由消息。
- x-match=any,表示只要有一组消息Headers属性键值对和绑定属性键值对匹配,就会路由消息。
路由规则:
Header Exchange根据消息Headers属性键值对和绑定属性键值对的匹配情况路由消息。
应用示例:
如上图所示,Message A将会发送到Queue 1和Queue 2,Message B将会发送到Queue 2。