更新时间:2024-10-29 GMT+08:00

Exchange类型介绍

Exchange主要包含4种类型:Direct、Fanout、Topic和Header。

Direct Exchange

工作原理:

  1. 将一个Queue绑定到某个Direct Exchange上,并赋予该绑定一个Routing Key。
  2. 当一个携带着Routing Key的消息被发送给Direct Exchange时,Direct Exchange会将它路由给与绑定Queue时设置的Routing Key完全匹配的Queue。

路由规则:

Direct Exchange会将消息路由到Routing Key完全匹配的Queue中。

应用场景:

Direct Exchange常用于单播路由。

应用示例:

图1 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常用于广播消息。

应用示例:

图2 Fanout Exchange示例

如上图所示,Message A将会发送到Queue 1和Queue 2中。

Topic Exchange

工作原理:

  1. 将一个Queue绑定到某个Topic Exchange上,并赋予该绑定一个Routing Key,此Routing Key包含通配符。
  2. 当一个携带着Routing Key的消息被发送给Topic Exchange时,Topic Exchange会将Routing Key进行通配符匹配,如果匹配成功,则将它路由给对应的Queue。

Topic Exchange的通配符包括“*”和“#”,单词间通过“.”隔开,例如test.#。

  • *表示一个单词。
  • #表示零个、一个或者多个单词。

路由规则:

Topic Exchange会将Routing Key进行通配符匹配,然后将消息路由到匹配成功的Queue中。

应用场景:

Topic Exchange常用于多播路由。

应用示例:

图3 Topic Exchange示例

如上图所示,Message A将会发送到Queue 1和Queue 2,Message B将会发送到Queue 1、Queue 2和Queue 3,Message C将会发送到Queue 3。

Header Exchange

工作原理:

  1. 将一个Queue绑定到某个Header Exchange上,并设置绑定属性键值对。
  2. 将消息发送给Header Exchange时,需要设置消息的Header属性键值对,Header Exchange根据消息Headers属性键值对和绑定属性键值对的匹配情况路由消息。

匹配算法由一个特殊的绑定属性键值对控制。该属性为“x-match”,它的取值如下:

  • x-match=all,表示所有的消息Headers属性键值对和绑定属性键值对都匹配才会路由消息。
  • x-match=any,表示只要有一组消息Headers属性键值对和绑定属性键值对匹配,就会路由消息。

路由规则:

Header Exchange根据消息Headers属性键值对和绑定属性键值对的匹配情况路由消息。

应用示例:

图4 Header Exchange示例

如上图所示,Message A将会发送到Queue 1和Queue 2,Message B将会发送到Queue 2。