RabbitMQ的介绍
- 1. RabbitMQ的介绍
- 2. RabbitMQ的结构以及每个组件的作用
-
- 2.1 结构介绍
-
- 2.1.1 Product【生产者】
- 2.1.2 Connection【连接】
- 2.1.3 channel【信道】
- 2.1.4 Broker【接收分发应用】
- 2.1.5 Virtual Host【 分组AMQP 的基本组件】
- 2.1.6 Exchange【交换机】
- 2.1.7 Queue【队列】
- 2.1.8 Binding【连接exchange 和 queue】
- 3. RabbitMQ的模式
-
- 3.1 简单模式
- 3.2 工作者模式
- 3.3 发布订阅模式
- 3.4 路由模式
- 3.5 topic主体模式
1. RabbitMQ的介绍
RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。
2. RabbitMQ的结构以及每个组件的作用
结构图

2.1 结构介绍
2.1.1 Product【生产者】
product:用户生产发送消息,为消费者传送消息
2.1.2 Connection【连接】
Connection:publisher(信息发送者)/consumer(信息接受者) 和 broker(接收和分发的应用) 之间的 TCP 连接
2.1.3 channel【信道】
Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的 channel 进行通讯,AMQP method 包含了channel id 帮助客户端和message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销
2.1.4 Broker【接收分发应用】
Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker
2.1.5 Virtual Host【 分组AMQP 的基本组件】
Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue 等
2.1.6 Exchange【交换机】
Exchange:message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and
fanout (multicast)
2.1.7 Queue【队列】
Queue:消息最终被送到这里等待 consumer 取走。消息只能被存储在队列里。
队列存储空间只受服务器内存和磁盘限制,它本质上是一个大的消息缓冲区。多个生产者可以向同一个队列发送消息,多个消费者也可以从同一个队列接收消息.
2.1.8 Binding【连接exchange 和 queue】
Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key。Binding
信息被保存到 exchange 中的查询表中,用于 message 的分发依据
3. RabbitMQ的模式
3.1 简单模式
从图上可以看到只有三个角色:
p 【product】: 生产者 发生消息的
红色[queue]: 队列。存储消息的
C [consumer]: 消费者 消费消息
3.2 工作者模式
特点:
1. 一个生产者
2. 由多个消费。
3. 统一个队列。
4. 这些消费者之间存在竞争关系。
用处:
比如批量处理上. rabbitMQ里面积压了大量的消息。
工作队列(即任务队列)背后的主要思想是避免立即执行资源密集型任务,并且必须等待它完成。相反,我们将任务安排在稍后完成。
我们将任务封装为消息并将其发送到队列。后台运行的工作进程将获取任务并最终执行任务。当运行多个消费者时,任务将在它们之间分发。
使用任务队列的一个优点是能够轻松地并行工作。如果我们正在积压工作任务,我们可以添加更多工作进程,这样就可以轻松扩展。
3.3 发布订阅模式
特点:
1.一个生产者
2.多个消费者
3.多个队列。
4.交换机 转发消息。
向多个消费者传递同一条消息。这种模式称为“发布/订阅”
3.4 路由模式
特点:
1. 一个生产者
2. 多个消费者
3. 多个队列。
4. 交换机 转发消息。
5. routekey:路由key 只要routekey匹配的消息可以到达对应队列。
路由模式是通过发送信息是的 key 与 路由向队列绑定时设定的 key 值进行比较,key 相同则将消息存入对应的队列中,否则队列不存储该消息
3.5 topic主体模式
绑定按照通配符的模式。
*: 统配一个单词。
#: 统配n个单词
主体模式与路由模式相似,但对比的 key 使用通配符进行判断
RabbitMQ(五)RabbitMQ的五种模式的代码实现:RabbitMQ中间消息件整理
其他有关RabbitMQ的知识:RabbitMQ中间消息件整理