RabbitMQ的工作模式主要包含如下5种,下面重点详解5种RabbitMQ工作模式@mikechen
简单模式
1.简单模式介绍
简单模式:主要就是一个producer发送消息,一个接收者接收消息。
2.简单模式模型
模型如下图所示:
简单模式实现:一发一接的简单结构,一个队列中一条消息,只能被一个消费者消费。
3.简单模式应用场景
简单模式的应用场景:手机短信、邮件单发。
工作队列模式
1.工作队列模式介绍
在简单模式中,一个生产者对应一个消费者,而实际生产过程中有多个消费者接收消息,这就是工作队列模式。
2.工作队列模式模型
如下图所示:
与简单模式相比,多了一个或一些消费端,多个消费端共同消费同一个队列中的消息。
3.工作队列模式应用场景
对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度。
发布订阅模式
1.发布订阅模式介绍
在订阅模式中,可以实现一条消息被多个消费者获取。
2.发布订阅模式模型
模型如下图所示:
在订阅模型中,多了一个 Exchange 角色,而且过程略有变化:
- 生产者:也就是要发送消息的程序,但是不再发送到队列中,而是发给交换机;
- 消费者:消息的接收者,会一直等待消息到来;
- 消息队列:接收消息、缓存消息;
交换机只负责转发消息,不具备存储消息的能力,没有队列绑定交换机,或者没有路由规则的队列,消息将丢失。
交换机有三种:
1)Fanout 广播:将消息交给所有绑定到交换机的队列;
2)Diect 定向:把消息交给符合指定的key的队列;
3)Topic 通配符:把消息交给符合routing pattern(路由模式的队列);
3.发布订阅应用场景
- 聊天室;
- 服务之间利用消息解耦;
- 微信订阅号;
路由模式
1.路由模式介绍
路由(Routing)模式是在发布订阅模式基础上的变种,发布订阅模式是无条件将所有消息分发给所有消费者队列。
路由模式(Direct)中,则是根据路由规则(Routing Key)将消息发送到指定的队列。
2.路由模式模型
如下图所示:
流程如下:
- 生产端发送的消息携带具体的路由key值;
- 交换机接收路由值;
- 交换机判断和当前交换机绑定后端队列,哪个满足路由的匹配将消息发送给这个队列;
- 根据定义的路由规则决定消息往哪个队列发送;
3.路由模式应用场景
路由模式是一种精准的匹配,应用于设置了 Routing Key 消息才能进行分发的场景。
Topic通配符模式
1.主题通配符模式介绍
主题模式:是在原有的 Routing Key 增加了通配符,可以进行 Routing Key 的模糊匹配,进行更加灵活的消息分发。
2.主题通配符模式模型
模型如下图所示:
与路由模式类似,不同的是在主题模式中,队列绑定交换机使用的路由名字不再是具体的字符串,而是使用替代符号 ‘ * ‘或’ # ‘。
3.主题通配符模式应用
应用于:模糊匹配路由规则,多个队列,多个消费者的场景。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》