[TOC]
# 1. 五种工作模式
* [ ] 生产者:复制产生消息,并发送到交换机
* [ ] 交换机:将消息投递到队列
* [ ] 队列:需要和交换机绑定:key或者订阅模式
* [ ] 消费者:从队列中取消息
> 1.生产者的消息都是先到交换机
> 2.交换机在向消费者发消息
## 1.1 简单工作模式
1. 当生产端发送消息到交换机(默认交换机),交换机根据消息属性发送到队列
2. 消费者监听绑定队列实现消息的接收和消费逻辑编写
3. 简单模式下,强调的一个队列queue只对应一个消费者.
4. 常见的应用场景就是**一发一接**的结构,例如:手机短信邮件单发
![](https://img.kancloud.cn/71/b8/71b83800c8dc53a292299b40c04a20fd_2004x818.png)
## 1.2 争抢模式(Work模式)
1. 与简单模式基本相同,不同的是一个队列绑定多个消费者
2. 多个消费者争夺消费同一队列中的消息-一个消息最终只能被其中的一个消费者消费
3. 应用场景:抢红包、资源分配系统
![](https://img.kancloud.cn/3e/c8/3ec82a937247b420ca117003cb54a9b2_2302x926.png)
## 1.3 路由模式
1. 生产端:发送消息,在消息中处理消息内容,携带一个routingkey
2. 交换机:接收消息,根据消息的routingkey去计算匹配后端队列的routingkey
3. 队列:存储交换机发送的消息
4. 消费端:简单模式 工作争抢
5. 交换机类型:direct
![](https://img.kancloud.cn/b6/6d/b66d91cb341bea8951231a169fa22449_3022x1276.png)
![](https://img.kancloud.cn/25/2b/252bb45ff8fcd7045559cc66909d32e3_549x383.png)
## 1.4 发布订阅模式(Pulish/Subscribe模式 Fanout广播)
群发消息到所有队列,队列的多个消费者争抢消费
交换机类型:fanout
![](https://img.kancloud.cn/58/28/5828e9608fad1e33d151d5bb35c83c8c_2690x1290.png)
## 1.5 主题模式(Topics模式 Tpoic通配符)
生产端:携带路由key,发送消息到交换机
队列:绑定交换机和路由不一样,不是一个具体的路由key,而可以使用\*和#代替一个范围
| * | 字符串,只能表示一级 |
| --- | --- |
| # | 多级字符串 |
交换机:根据匹配规则,将路由key对应发送到队列
消息路由key:
* 北京市.朝阳区.酒仙桥
* 北京市.#: 匹配true
* 上海市.浦东区.\*: 没匹配false
* 新疆.乌鲁木齐.#
![](https://img.kancloud.cn/5e/4f/5e4f8b7de071b90c1ff8ed4cd62c5215_2746x1258.png)