介绍
接收消息,根据路由键转发消息到绑定的队列
蓝色的框:Client端将消息投递到Exchange交换机上,然后通过路由关系,路由到指定的队列。
绿色的框:表示消费者从队列取数据。
红色的框:是指RabbitMQ 服务。
黄色的框:路由绑定的关系。
属性
-
Name:交换机名称
-
Type:交换机类型,如:
-
direct(直连交换机) :将一个消息队列与某个直连交换机通过路由键绑定在一起,当一个Msg和路由键发送到直连交换机上时,直连交换机会把Msg根据路由键分发到队列。这种模式类似于一对一。队列与RouteKey 是一一对应的
注意: Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何binding操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。
代码案例 -
topic(主题交换机) :主题交换机是一种发布/订阅的模式,结合了直连交换机与扇形交换机的特点,消息队列与主题交换机的绑定也是通过路由键的,将routekey和某个topic进行模糊匹配,此时队列需要绑定一个topic。这个模式类似于多播,当消息的路由规则只匹配到一个路由键时,此时主题交换机可以看作是直连交换机,当路由规则匹配了主题交换机上所有绑定的队列的路由键时,此时主题交换机可以看作是扇形交换机
注意:模糊匹配可以使用通配符进行匹配
+ “#“ 匹配一个或多个词
+ “ * ”匹配不多不少一个词
例如 : “log.#”更够匹配到“log.info.aa”
“log.* ” 只能匹配到“log.info”
代码案例 -
fanouot(扇型交换机) :当一个Msg发送到扇形交换机上时,则扇形交换机会将消息分别发送给所有绑定到此交换机上的消息队列。扇形交换机将消息路由给绑定到自身的所有消息队列,也就是说路由键在扇形交换机里没有作用,故消息队列绑定扇形交换机时,路由键可为空,只需要简单的将队列绑定到交换机上。这个模式类似于广播。
其发送消息是最快的,性能是最好的
- headers(头交换机) :头交换机类似与主题交换机,但是却和主题交换机有着很大的不同。主题交换机使用路由键来进行消息的路由,而头交换机使用消息属性来进行消息的分发,通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。在头交换机里有一个特别的参数”x-match”,当”x-match”的值为“any”时,只需要消息头的任意一个值匹配成功即可,
当”x-match”值为“all”时,要求消息头的所有值都需相等才可匹配成功。
-
-
Durability:是否需要持久化,true为持久化。
-
Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange。即删除没有绑定队列的交换机
-
Internal:当前Exchange是否用于RabbitMQ内部使用,默认为 false。 一般是对Rabbitmq拓展一些插件才会用到。
-
Arguments:扩展参数,用于扩展AMQP协议自制定化使用。