天天看點

02-RabbitMQ核心概念

目錄

一:初識RabbitMQ

二:RabbitMQ的特點

三:什麼是AMQP進階消息隊列協定?

四:AMQP協定模型和機制

五:AMQP核心概念

六:RabbitMQ的整體架構是什麼樣子?

七:RabbitMQ消息是如何流轉的

一:初識RabbitMQ

RabbitMQ是一個開源的消息代理的隊列伺服器,用來通過普通協定在完全不同的應用之間共享資料。

RabbitMQ是使用Erlang語言來編寫的,并且RabbitMQ是基于AMQP協定的。

Erlang語言在資料互動方面性能優秀,有着和原生Socket一樣的延遲,這也是RabbitMQ高性能的原因所在。可謂“人如其名”,RabbitMQ像兔子一樣迅速。

二:RabbitMQ的特點:

開源、性能優秀,穩定性保障

提供可靠性消息投遞模式、傳回模式

與Spring AMQP完美整合,API豐富

叢集模式豐富,表達式配置,HA模式,鏡像隊列模型

保證資料不丢失的前提做到高可靠性、可用性

三:什麼是AMQP進階消息隊列協定?

AMQP全稱:Advanced Message Queuing Protocol。

AMQP翻譯:進階消息隊列協定。

AMQP定義:是具有現代特征的二進制協定。是一個提供統一消息服務的應用層标準進階消息隊列協定,是應用協定的一個開放标準,為面向消息的中間件設計。

四:AMQP協定模型和機制

02-RabbitMQ核心概念

Exchange可以了解為MQ的主題-topic,如topic_order訂單主題、topic_textMsg短信主題。

RabbitMQ裡面有路由這麼的一個機制,就是說通過主題,一條消息發過來,把消息發到主題或者交換機(Exchange)上,主題或者交換機會幫你通過你發送的一些規則,通過Exchange投遞到某幾個隊列或某一個隊列上。

AMQP的特性:

  1. 一個Exchange與多個隊列綁定(Message Queue),是一對多的關系,但是在執行個體工作中就是認為其是一對多的關系。
  2. 也可以是一個隊列對多個Exchange,但是這樣就使簡單的業務更複雜化,同時不易于編碼和了解,不推薦這樣了解。

五:AMQP核心概念

(1)Server: Broker,接收用戶端的連結,實作AMQP實體服務

(2)Connection: 連接配接,應用程式與Broker的網絡連結

(3)Channel: 網絡通道,進行消息讀寫的通道。用戶端可以建立多個Channel,每個Channel表示一個會話任務。

(4)Message:消息,伺服器與應用程式之間傳送的資料,由Properties和Body組成。Properties:消息優先級、延遲的特性設定;Body則是消息體的内容。

(5)Virtual host: 虛拟位址【虛拟的邏輯區域】,用于邏輯隔離,最上層消息路由。一個Virtual host 裡面可以有若幹個Exchange和Queue,同一個Virtual Host裡不能有相同的Exchange和Queue。

(6)Exchange:交換機,接收消息,根據路由鍵轉發消息到隊列

(7)Binding: Exchange和Queue之間的虛拟連接配接,binding中可以包含routing key

(8)Routing key: 一個路由規則,虛拟機可以用它來确定如何路由一個特定消息,按照正則比對規則,如test.*,dev.*。

(9)Queue: 也稱Message Queue,消息隊列,儲存消息并将他們轉發給消費者

六:RabbitMQ的整體架構是什麼樣子?

02-RabbitMQ核心概念

AMQP的特性:

  1. 一個Exchange與多個隊列綁定(Message Queue),是一對多的關系,但是在執行個體工作中就是認為其是一對多的關系,一個consumer消費一個隊列裡面的資料就好了。
  2. 也可以是一個隊列對多個Exchange,但是這樣就使簡單的業務更複雜化,同時不易于編碼和了解,不推薦這樣了解。

七:RabbitMQ消息是如何流轉的

02-RabbitMQ核心概念

生産者【publicsher】産生了一條帶有某種路由規則的消息(message),通過exchange(交換機/主題)識别到路由規則後,按照某種規則路由到某個消息隊列(message queue)裡邊,對應的有一個消費者(Consumer)監聽了這個message queue,然後就可以對這個消息進行處理了。

繼續閱讀