当前位置:   article > 正文

消息队列篇-RabbitMQ四种交换器模式(Direct、Fanout、Topic、Header)_rabbitmq队列类型 direct

rabbitmq队列类型 direct


参考图
在这里插入图片描述

一、Direct模式

Direct模式就是指定队列模式,消息来了,只发给指定的Queue,其他Queue都收不到。

1、创建四个不同名称的Queue

simon、simon.emps、simon.news、guojiawei.news
在这里插入图片描述

2、创建direct类型的交换器exchange.direct

在这里插入图片描述
创建direct交换机成功:
在这里插入图片描述

3、将exchange.direct与四个Queue绑定

在这里插入图片描述
在这里插入图片描述
四个队列均绑定到了exchange.direct交换器上。
在这里插入图片描述

4、给exchange.direct交换机发送消息

在这里插入图片描述
在这里插入图片描述

5、接收到消息的队列simon.emps消费消息

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6、总结

direct交换机是完全匹配、单播模式,消息中的路由键(routing key)如果和Binding中的binding key一致,交换机就将消息发到对应的队列中。路由键与队列名完全匹配。
案例中:发送给direct.exchange交换机的消息,指定路由键routing key = simon.emps。所以该消息需要完全匹配到绑定时Routing key为simon.emps的队列。所以只有simon.emps的队列读到了消息。
在这里插入图片描述

二、Fanout模式

fanout模式是广播模式,消息来了,就会发送给所有的队列。

1.创建fanout类型的交换机exchange.fanout

在这里插入图片描述

2.将exchange.fanout与四个Queue绑定

在这里插入图片描述

3.给exchange.fanout发送消息

在这里插入图片描述
在这里插入图片描述

4.队列列表查看消息

在这里插入图片描述
绑定的四个队列都接收到了消息

5.总结

每个发到fanout类型交换机的消息都会被分到所有绑定的队列上去。fanout交换器不处理路由键,只是简单的将队列绑定到交换器上。fanout类型转发消息是最快的。
案例中:往exchange.fanout交换器发送消息,指定了Routing key = simon。但是消息发送到了队列名为simon、simon.emps、simon.news、guojiawei.news四个队列上,其中只有simon队列绑定时指定的Routing key为simon。所有fanout类型的交换器不处理路由键,就是全部广播。
在这里插入图片描述

三、Topic模式

1.创建topic类型的交换机exchange.topic

在这里插入图片描述

2.将exchange.topic与四个Queue绑定

在这里插入图片描述

  • 与simon、simon.news、simon.emps绑定: Routing key = simon.#
  • 与guojiawei.news绑定 :Routing key = *.news
    #表示可以有也可以没有
    *表示必须有一个

3.给exchange.topic发送消息

1、路由键Routing key为simon.news

在这里插入图片描述
结果:
四个队列都能接收到。
在这里插入图片描述
simon.news既能匹配到simon.#又能匹配到*.news

2、路由键Routing key为simon.haha

在这里插入图片描述
在这里插入图片描述
结果,匹配到了simon.#的路由

4.总结

topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配。
会识别两个通配符,#匹配0个或多个单词,*匹配一个单词。
在这里插入图片描述

四、Header模式

headers匹配AMQP消息的header而不是routing key,headers交换器和direct交换器完全一致,但是性能差很多,目前几乎不用了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/598198
推荐阅读
相关标签
  

闽ICP备14008679号