1. FANOUT(扇型交换机)
2. TOPIC(主题交换机)
3. DIRECT(直连交换机)
4. HEADERS(头交换机)
5. SYSTEM
BindingKey(绑定键):交换机与队列进行绑定,建立Exchange与Queue之间的关系。
RoutingKey(路由键):Producer发送消息与路由键给Exchange,Exchange交换器就会根据RoutingKey路由键去匹配队列(路由键 与交换器的匹配),如何则将该消息路由到绑定的Queue。
FANOUT(扇型交换机):type="fanout"当一个message发送到扇形交换机X上时,则扇形交换机X会将消息分别发送给所有绑定到X上的消息队列。扇形交换机将消息路由给绑定到自身的所有消息队列,也就是说路由键在扇形交换机里没有作用,故消息队列绑定扇形交换机时,路由键可为空。这个模式类似于广播。Fanout交换机转发消息是最快的。
Direct Exchange(直连交换机):type="direct"需要同时匹配bindKey和routingKey,先找出绑定的队列,然后再判断routekey,将一个名为Q的消息队列与某个名为X的直连交换机通过值为R的路由键绑定在一起,当一个message和路由键R发送到直连交换机X上时,直连交换机X会把message根据路由键R分发到相匹配的Q队列。这种模式类似于一对一,即完全匹配。
Topic Exchange(主题交换机):type="topic"需要同时匹配bindKey和routingKey,先找出绑定的队列,然后再判断routekey,主题交换机是一种发布/订阅的模式,结合了直连交换机与扇形交换机的特点。相比Direct增加了一些模糊匹配,*:匹配一个词,#:匹配0个或多个词。
Headers Exchange(头交换机):头交换机类似与主题交换机,但是却和主题交换机有着很大的不同。主题交换机使用路由键来进行消息的路由,而头交换机它不依赖与bindingKey和routingKey,而是在绑定队列与交换器的时候指定一个键值对,使用消息属性来进行消息的分发,通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。在头交换机里有一个特别的参数”x-match”,当”x-match”的值为“any”时,只需要消息头的任意一个值匹配成功即可,当”x-match”值为“all”时,要求消息头的所有值都需相等才可匹配成功。