浅析RabbitMQ五种交换机类型,六种队列模式
浅析RabbitMQ五种交换机类型,六种队列模式
五种交换机类型,六种队列模式
5种交换机类型 Exchange
Direct exchange(直连交换机)
-
Direct exchange
点对点模式,根据交换机绑定的routingkey才能消费,多个消费者时,谁先拿到消息谁消费,一条消息只能消费一次
Topic exchange(主题交换机)
-
Topic exchange
2.1 该模式需要exchange和queue绑定还需要和路由键routingKey关联
2.2 支持 # 0 或 多词模糊匹配,* 一个词匹配
应用场景:订阅任务,信息分类更新业务
Fanout exchange(扇型交换机)
-
Fanout exchange
3.1 不需要路由键routingKey
3.2 将queue和exchange绑定,一个exchange可以绑定N多个queue,每一个queue都会得到同样的消息
3.3 一个queue可以和多个exchange绑定,消费来自不同的exchange的消息
3.4 转发消息最快
应用:群聊功能、全网消息推送功能
Headers exchange(头交换机)
-
Headers exchange
4.1 使用消息属性来进行消息的分发,通过判断消息头的值能否与指定的绑定相匹配来确立路由规则
4.2 在头交换机里有一个特别的参数”x-match”
当”x-match”的值为“any”时,只需要消息头的任意一个值匹配成功即可,
当”x-match”值为“all”时,要求消息头的所有值都需相等才可匹配成功
如图所示:
System exchange(默认类型)
-
System exchange
系统默认,不需要定义交换机名字,点对点模式
6种队列模式
hello word 模式(单点对点模式)
-
hello word 模式(单点对点模式)
系统默认队列与交换机,点对点发送消息
work模式(工厂模式)
-
work模式(工厂模式)
一个发送端,多个接收端,支持持久化durable=true持久化,公平消费原则channel.basicQos(1)(保证在接收端一个消息没有处理完时不会接收另一个消息,即接收端发送了ack后才会接收下一个消息。在这种情况下发送端会尝试把消息发送给下一个空闲的的接收端。),消息的可靠性ack=true,false
Publish/Subscribe(发布-订阅者模式)
-
Publish/Subscribe(发布-订阅者模式)
一个生产者发送消息到多个消费者
routing模式(路由模式)
-
routing模式(路由模式)
发送消息到交换机并且要指定路由key ,消费者需要匹配对路由key才能消费
topic模式(主题模式)
-
topic模式(主题模式)
发送消息到交换机并和路由key进行绑定,但该路由key支持模糊匹配,是指成为“一类”消息
RPC模式(集群模式)
- RPC模式(集群模式)