RabbitMQ的五种模式
一、五种模式详解
1.简单模式(Queue模式)
当生产端发送消息到交换机,交换机根据消息属性发送到队列,消费者监听绑定队列实现消息的接收和消费逻辑编写.简单模式下,强调的一个队列queue只被一个消费者监听消费.
1.1 结构
生产者:生成消息,发送到交换机
交换机:根据消息属性,将消息发送给队列
消费者:监听这个队列,发现消息后,获取消息执行消费逻辑
1.2应用场景
常见的应用场景就是一发,一接的结构
例如:
手机短信
邮件单发
2.争抢模式(Work模式)
强调的也是后端队列与消费者绑定的结构
2.1结构
生产者:发送消息到交换机
交换机:根据消息属性将消息发送给队列
消费者:多个消费者,同时绑定监听一个队列,之间形成了争抢消息的效果
2.2应用场景
抢红包
资源分配系统
3.路由模式(Route模式 Direct定向)
从路由模式开始,关心的就是消息如何到达的队列,路由模式需要使用的交换机类型就是路由交换机(direct)
3.1 结构
生产端:发送消息,在消息中处理消息内容,携带一个routingkey
交换机:接收消息,根据消息的routingkey去计算匹配后端队列的routingkey
队列:存储交换机发送的消息
消费端:简单模式 工作争抢
3.2应用场景
短信
聊天工具
邮箱。。
手机号/邮箱地址,都可以是路由key
4.发布订阅模式(Pulish/Subscribe模式 Fanout广播)
不计算路由的一种特殊交换机
4.1结构
4.2应用场景
消息推送
广告
5.主题模式(Topics模式 Tpoic通配符)
路由key值是一种多级路径。中国.四川.成都.武侯区
5.1结构
生产端:携带路由key,发送消息到交换机
队列:绑定交换机和路由不一样,不是一个具体的路由key,而可以使用*和#代替一个范围
* | 字符串,只能表示一级 |
---|---|
# | 多级字符串 |
交换机:根据匹配规则,将路由key对应发送到队列
消息路由key:
北京市.朝阳区.酒仙桥
北京市.#: 匹配true
上海市.浦东区.*: 没匹配false
新疆.乌鲁木齐.#
5.2 应用场景
做物流分拣的多级传递.