RabbitMq學習筆記(2)_RabbitMQ的概念及使用

六.RabbitMQ

6.1RabbitMQ簡介:

RabbitMQ是一個由erlang開發的AMQP(Advanved Message Queue Protocol)的開源實現。

核心概念

Message

消息,消息是不具名的,它由消息頭和消息體組成。消息體是不透明的,而消息頭則由一系列的可選屬性組成,這些屬性包括routing-key(路由鍵)、priority(相對於其他消息的優先權)、delivery-mode(指出該消息可能需要持久性存儲)等。

Publisher

消息的生產者,也是一個向交換器發佈消息的客戶端應用程序。

Exchange

交換器,用來接收生產者發送的消息並將這些消息路由給服務器中的隊列。

Exchange有4種類型:direct(默認),fanout, topic, 和headers,不同類型的Exchange轉發消息的策略有所區別

Queue

消息隊列,用來保存消息直到發送給消費者。它是消息的容器,也是消息的終點。一個消息可投入一個或多個隊列。消息一直在隊列裏面,等待消費者連接到這個隊列將其取走。

Binding

綁定,用於消息隊列和交換器之間的關聯。一個綁定就是基於路由鍵將交換器和消息隊列連接起來的路由規則,所以可以將交換器理解成一個由綁定構成的路由表。

Exchange 和Queue的綁定可以是多對多的關係。

Connection

網絡連接,比如一個TCP連接。

Channel

信道,多路複用連接中的一條獨立的雙向數據流通道。信道是建立在真實的TCP連接內的虛擬連接,AMQP 命令都是通過信道發出去的,不管是發佈消息、訂閱隊列還是接收消息,這些動作都是通過信道完成。因爲對於操作系統來說建立和銷燬 TCP 都是非常昂貴的開銷,所以引入了信道的概念,以複用一條 TCP 連接。

Consumer

消息的消費者,表示一個從消息隊列中取得消息的客戶端應用程序。

Virtual Host

虛擬主機,表示一批交換器、消息隊列和相關對象。虛擬主機是共享相同的身份認證和加密環境的獨立服務器域。每個 vhost 本質上就是一個 mini 版的 RabbitMQ 服務器,擁有自己的隊列、交換器、綁定和權限機制。vhost 是 AMQP 概念的基礎,必須在連接時指定,RabbitMQ 默認的 vhost 是 / 。

Broker

表示消息隊列服務器實體

在這裏插入圖片描述

**6.2RabbitMq運行機制

6.2.1 AMQP 中的消息路由

AMQP 中消息的路由過程和 Java 開發者熟悉的 JMS 存在一些差別,AMQP 中增加了 Exchange 和 Binding 的角色。生產者把消息發佈到 Exchange 上,消息最終到達隊列並被消費者接收,而 Binding 決定交換器的消息應該發送到那個隊列。

在這裏插入圖片描述

6.2.2 Exchange 類型

Exchange分發消息時根據類型的不同分發策略有區別,目前共四種類型:direct、fanout、topic、headers 。headers 匹配 AMQP 消息的 header 而不是路由鍵, headers 交換器和 direct 交換器完全一致,但性能差很多,目前幾乎用不到了,所以直接看另外三種類型:

6.2.3 Direct Exchange類型

在這裏插入圖片描述

消息中的路由鍵(routing key)如果和 Binding 中的 binding key 一致, 交換器就將消息發到對應的隊列中。路由鍵與隊列名完全匹配,如果一個隊列綁定到交換機要求路由鍵爲“dog”,則只轉發 routing key 標記爲“dog”的消息,不會轉發“dog.puppy”,也不會轉發“dog.guard”等等。****它是完全匹配、單播的模式****。

6.2.4 FanoutExchange類型

在這裏插入圖片描述
每個發到 fanout 類型交換器的消息都會分到所有綁定的隊列上去。fanout 交換器不處理路由鍵,只是簡單的將隊列綁定到交換器上,每個發送到交換器的消息都會被轉發到與該交換器綁定的所有隊列上。很像子網廣播,每臺子網內的主機都獲得了一份複製的消息。****fanout 類型轉發消息是最快的****。

6.2.5 TopicExchange

在這裏插入圖片描述
topic 交換器通過模式匹配分配消息的路由鍵屬性,將路由鍵和某個模式進行匹配,此時隊列需要綁定到一個模式上。它將路由鍵和綁定鍵的字符串切分成單詞,這些單詞之間用點隔開。它同樣也會識別兩個通配符:符號“#”和符號“*”。#匹配0個或多個單詞,*匹配一個單詞。

6.3.安裝RabbitMQ

安裝過程略(參考windows安裝及linux安裝文檔)

訪問頁面
在這裏插入圖片描述

6.4. 測試RabbitMQ

思路:

  1. 創建exchange

  2. 創建queue

  3. 綁定exchange與queue

  4. 測試發送信息

案例:

  1. 創建3種exchange
    在這裏插入圖片描述
    在這裏插入圖片描述

  2. 加入queue
    在這裏插入圖片描述

  3. Exchange與四個queu過行綁定,並設置路由
    在這裏插入圖片描述

(綁定directexchange與隊列)

在這裏插入圖片描述
(topicExchange綁定)
在這裏插入圖片描述

  1. 發送消息
    在這裏插入圖片描述

  2. 去隊列中查看消息
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章