:-: ![](https://img.kancloud.cn/09/e7/09e74be6d71dc1eaa0a66c028515d430_1227x587.jpg)
RabbitMQ工作原理
<br/>
**1. Broker**
接收和分发消息的应用,RabbitMQ Server 就是 Message Broker 。
<br/>
**2. Virtual host**
出于多租户和安全因素设计的,把 AMQP(高级消息队列协议)的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等。
<br/>
**3. Connection**
Producer/consumer 和 broker 之间的 TCP 连接。
<br/>
**4. Channel**
如果每一次访问 RabbitMQ 都建立一个 Connection,在消息数量大的时候建立 TCP Connection 的开销将是巨大的,效率也较低。
<br/>
Channel 是在 Connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。<mark>Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销</mark>。
<br/>
**5. Exchange(交换机)**
message 到达 broker 的第一站,不同类型的交换机根据分发规则,匹配查询表中的 routing key,分发消息到 queue 中去。
<br/>
常用的交换机类型有:direct (point-to-point)、topic (publish-subscribe) 、fanout (multicast)。
<br/>
**6. Queue**
消息最终被送到这里等待 consumer 取走。
<br/>
**7. Binding**
exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据。
- 消息队列
- 什么是MQ
- MQ的作用
- MQ的分类
- MQ的选择
- RabbitMQ
- RabbitMQ是什么
- 四大核心概念
- 工作原理
- 环境搭建
- windows系统下的搭建
- centos7系统下的搭建
- 常用命令
- 服务相关命令
- 管理用户命令
- 管理队列命令
- 第一个RabbitMQ程序
- 工作队列
- 轮询分发消息
- 消息应答
- 持久化
- 发布确认
- 发布确认原理
- 发布确认策略
- 交换机概念
- 交换机类型
- 无名交换机
- Fanout交换机
- Direct交换机
- Topic交换机
- 死信队列
- 死信概念
- 死信来源
- 死信实战
- 延迟队列
- 什么是延迟队列
- TTL设置方式
- 队列TTL延迟队列
- 消息TTL延迟队列
- 插件打造延迟队列
- 延迟队列总结
- 发布确认高级
- 代码实现
- 回退消息
- 备份交换机
- 幂等性
- 幂等性概念
- 消息重复消费
- 消费端幂等性保障
- 优先级队列
- 使用场景
- 设置优先级
- 惰性队列
- 什么是惰性队列
- 队列的两种模式
- 声明惰性队列
- RabbitMQ集群
- 为什么要搭建集群
- 集群搭建步骤
- 集群工作方式
- 脱离集群
- 镜像队列
- 高可用负载均衡