1. 程式人生 > >RabbitMQ介紹及安裝部署

RabbitMQ介紹及安裝部署

lan 行數 安裝部署 原理圖 tro 快的 它的 主題 通配符

本節內容:

  • RabbitMQ介紹
  • RabbitMQ運行原理
  • RabbitMQ重要術語
  • 三種ExchangeType
  • RabbitMQ集群種類
  • 集群基本概念
  • 鏡像模式部署集群

一、RabbitMQ介紹

消息系統通過將消息的發送和接收分離來實現應用程序的異步和解偶。
或許你正在考慮進行數據投遞,非阻塞操作或推送通知。或許你想要實現發布/訂閱,異步處理,或者工作隊列。所有這些都屬於消息系統的模式。
RabbitMQ是一個消息代理,一個消息系統的媒介。它可以為你的應用提供一個通用的消息發送和接收平臺,並且保證消息再傳輸過程中的安全。
RabbitMQ是一個在AMQP協議標準上完整的、可復用的企業消息系統。它遵循Mozilla Public License開源協議,采用Erlang語言實現的工業級的消息隊列。

二、RabbitMQ運行原理

RabbitMQ的兩大核心組件是Exchange和Queue,以下是它的運行原理圖:

技術分享

三、RabbitMQ重要術語

  1. Server(broker): 接受客戶端連接,實現AMQP消息隊列和路由功能的進程。
  2. Vitual Host: 這是一個虛擬概念,類似於權限控制組,一個Vitual Host裏面可以有若幹個Exchange和Queue,但是權限控制的最小粒度是Vitual Host。
  3. Exchange: 接收生產者發送的消息,並根據Binding規則將消息路由給服務器中的隊列。ExchangeType決定了Exchange路由消息的行為,例如,在RabbitMQ中,ExchangeType有direct、Fanout和Topic三種,不同類型的Exchange路由的行為是不一樣的。
  4. Message Queue: 消息隊列,用於存儲還未被消費者消費的消息。
  5. Message: 由Header和Body組成,Header是由生產者添加的各種屬性的集合,包括Message是否被持久化、由哪個Message Queue接受、優先級是多少等。而body是真正需要傳輸的APP數據。
  6. BindingKey: 所謂綁定就是將一個特定的一個Exchange和一個特定的Queue綁定起來,綁定關鍵字稱為BindingKey。

四、三種ExchangeType

RabbitMQ消息模型的核心理念是:發布者(producer)不會直接發送任何消息給隊列。事實上,發布者(producer)甚至不知道消息是否已經被投遞到隊列。
發布者(producer)只需要把消息發送給一個交換機(exchange)。交換機非常簡單,它一邊從發布者方接收消息,一邊把消息推送到隊列。交換機必須知道如何處理它接收到的消息,是應該推送到指定的隊列還是是多個隊列,或者是直接忽略消息。這些規則是通過交換機類型(exchange type)來定義的。

1. 直接式交換器類型(Direct)

Direct Exchange:直接交互式處理路由鍵。需要將一個隊列綁定到交換機上,要求該消息與一個特定的路由鍵完全匹配,這是一個完整的匹配。路由鍵就是BindingKey。如果一個隊列綁定到該交換機上要求路由鍵“dog”,則只有被標記為“dog”的消息才被轉發,不會轉發dog.puppy,也不會轉發dog.guard,只會轉發dog。

技術分享

2. 廣播式交換機類型(Fanout)

Fanout Exchange:廣播式路由鍵。你只需要簡單的將隊列綁定到交換機上。一個發送到交換機的消息都被轉發到與該交換機綁定的所有隊列上。很像子網廣播,每臺子網內的主機都獲得了一份復制的消息。Fanout交換機轉發消息是最快的。

技術分享

3. 主題式交換金類型(Topic)

Topic Exchange:主題式交換器。通過消息的路由關鍵字和綁定關鍵字的模式匹配,將消息路由到被綁定的隊列中。這種路由器類型可以被用來支持經典的發布/訂閱消息傳輸類型——使用主題名字空間作為消息尋址模式,將消息傳遞給那些部分或者全部匹配主題模式的多個消費者。主題交換器類型的工作方式如下:綁定關鍵字用零個或多個標記構成,每一個標記之間用“.”字符分隔。綁定關鍵字必須用這種形式明確說明,並支持通配符:“*”匹配一個詞組,“#”零個或多個詞組。因此綁定關鍵字“*.stock.#”匹配路由關鍵字“usd.stock”和“eur.stock.db”,但是不匹配“stock.nasdaq”。

技術分享

五、RabbitMQ集群種類

RabbitMQ介紹及安裝部署