:-: 
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集群
- 為什么要搭建集群
- 集群搭建步驟
- 集群工作方式
- 脫離集群
- 鏡像隊列
- 高可用負載均衡