[TOC]
# 1. 交換機概念
:-: 
RabbitMQ工作原理
RabbitMQ 消息傳遞模型的核心思想是: **生產者生產的消息從不會直接發送到隊列**。實際上,通常生產者甚至都不知道這些消息傳遞到了哪些隊列中。
<br/>
相反,**生產者只能將消息發送到交換機(exchange)**,交換機工作的內容非常簡單,一方面它接收來自生產者的消息,另一方面將它們推入隊列。
<br/>
交換機必須確切知道如何處理收到的消息,是應該把這些消息放到特定隊列還是把他們放到許多隊列中,還是說應該丟棄它們。這就的由交換機的類型來決定。
<br/>
# 2. 臨時隊列
之前我們使用的是具有特定名稱的隊列如`hello` 和 `ack_queue`。隊列的名稱對我們來說至關重要,我們需要指定我們的消費者去消費哪個隊列的消息。
```java
private final static String QUEUE_NAME = "hello";
private static final String TASK_QUEUE_NAME = "ack_queue";
```
每當我們連接到 RabbitMQ 時,我們都需要一個全新的空隊列,為此我們可以創建一個具有隨機名稱的隊列,或者能讓服務器為我們選擇一個**隨機隊列名稱**那就更好了。其次**一旦我們斷開了消費者的連接,隊列將被自動刪除**。創建臨時隊列的方式如下:
```java
//聲明一個臨時隊列
com.rabbitmq.client.AMQP.Queue.DeclareOk tempQueue = channel.queueDeclare();
//獲取臨時隊列名
String queueName = tempQueue.getQueue();
```
創建出來的臨時隊列名稱類似下面的字符串。

<br/>
# 3. binding(綁定)
綁定其實是 exchange 和 queue 之間的橋梁,它告訴我們 exchange 和哪個隊列進行了綁定關系。比如說下面這張圖告訴我們的就是 X 與 Q1 和 Q2 進行了綁定。

- 消息隊列
- 什么是MQ
- MQ的作用
- MQ的分類
- MQ的選擇
- RabbitMQ
- RabbitMQ是什么
- 四大核心概念
- 工作原理
- 環境搭建
- windows系統下的搭建
- centos7系統下的搭建
- 常用命令
- 服務相關命令
- 管理用戶命令
- 管理隊列命令
- 第一個RabbitMQ程序
- 工作隊列
- 輪詢分發消息
- 消息應答
- 持久化
- 發布確認
- 發布確認原理
- 發布確認策略
- 交換機概念
- 交換機類型
- 無名交換機
- Fanout交換機
- Direct交換機
- Topic交換機
- 死信隊列
- 死信概念
- 死信來源
- 死信實戰
- 延遲隊列
- 什么是延遲隊列
- TTL設置方式
- 隊列TTL延遲隊列
- 消息TTL延遲隊列
- 插件打造延遲隊列
- 延遲隊列總結
- 發布確認高級
- 代碼實現
- 回退消息
- 備份交換機
- 冪等性
- 冪等性概念
- 消息重復消費
- 消費端冪等性保障
- 優先級隊列
- 使用場景
- 設置優先級
- 惰性隊列
- 什么是惰性隊列
- 隊列的兩種模式
- 聲明惰性隊列
- RabbitMQ集群
- 為什么要搭建集群
- 集群搭建步驟
- 集群工作方式
- 脫離集群
- 鏡像隊列
- 高可用負載均衡