RabbitMQ學習筆記:原理初探

1.簡單介紹:

RabbitMQ是一個由erlang開發的基於AMQP(Advanced Message Queue )協議的開源實現。用於在分佈式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面都非常的優秀。是當前最主流的消息中間件之一。

RabbitMQ的官網:http://www.rabbitmq.com

 

2. AMQP

AMQP,是應用層協議的一個開放標準,爲面向消息的中間件設計。消息中間件主要用於組件之間的解耦,消息的發送者無需知道消息使用者的存在,同樣,消息使用者也不用知道發送者的存在。AMQP的主要特徵是面向消息、隊列、路由(包括點對點和發佈/訂閱)、可靠性、安全。

 

3.系統架構

上圖所示:

  • AMQP 裏主要要說兩個組件:Exchange 和 Queue;
  • 綠色的 X 就是 Exchange ,紅色的方塊是 Queue ,這兩者都在 Server 端,又稱作 Broker ,這部分是 RabbitMQ 實現的;
  • 而藍色的則是客戶端,通常有 Producer(生產者) 和 Consumer(消費者) 兩種類型;

RabbitMQ 的工作流程:

  1. 【打開頻道】客戶端連接到消息隊列服務器,打開一個 Channel
  2. 【聲明交換機】客戶端聲明一個 Exchange ,並設置相關屬性;
  3. 【聲明消息隊列】客戶端聲明一個 Queue,並設置相關屬性;
  4. 【綁定交換機和隊列】客戶端使用 routing key,在 ExchangeQueue 之間建立好綁定關係;
  5. 【消息投遞】客戶端投遞消息到 Exchange Exchange 接收到消息後,就根據消息的 Routing Key 和已經設置的 Binding,進行消息路由,將消息投遞到一個或多個隊列裏;

注意:一個消費者只能消費一條消息(如果重複聲明,類型參數不變不會報錯。 如果第二次聲明和第一次類型參數有變化,會報異常) ;

 

4.基本概念

  • Producer:生產者,數據的發送方;
  • Consumer:消費者,數據的接收方;
  • Exchange:消息交換機,它指定消息按什麼規則,路由到哪個隊列;
  • Queue:消息隊列載體,每個消息都會被投入到一個或多個隊列;
  • Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來;
  • Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞;
  • vhost:虛擬主機(默認“/”),一個Broker裏可以開設多個vhost,用作不同用戶的權限分離;
  • Channel:消息通道,在客戶端的每個連接裏,可建立多個Channel,每個Channel代表一個會話任務;

 

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