RabbitMQ(1)---基本概念

白露非霜發表於2020-05-27

一、安裝RabbitMQ

安裝直接用docker安裝,如果手動安裝的話比較繁瑣,還要安裝erlang語言的環境。在安裝有docker機器上執行官網提供的指令(https://www.rabbitmq.com/download.html):docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

 

 安裝好之後 瀏覽器訪問15672埠,可以看到web管理端。預設的是使用者名稱密碼都是guest

 二、AMQP協議(Advanced message queue protocol 高階訊息佇列協議)核心概念和RabbitMQ整體架構

RabbitMQ是通過Erlang語言基於AMQP協議開發的。erlang語言常用於交換機上,因為它的高效,自然rabbitMQ也很高效了。

AMQP模型描述了一套模組化的元件以及這些元件之間進行連線的標準規則,核心概念:
server:服務,又稱broker,接受客戶端連線,對外提供amqp實體服務

connection:連線,客戶端與server的連線

channel:網路通道,幾乎所有的操作都是在channel中進行的,是進行訊息物件的通道,客戶端可以建立多個通道,每一個channel表示一個會話任務

virtual host:虛擬主機,是一個邏輯上的概念,一個虛擬主機中可以包含多個exhange 和 message queue但是一個虛擬主機中不能有名稱相同的exchange 和 message queue
 
exchange:接收發布應用程式傳送的訊息,並根據一定的規則將這些訊息路由到訊息佇列
 
message queue:訊息佇列,儲存訊息,直到這些訊息被消費者安全處理完為止
 
binding:定義了exchange和message queue之間的關聯,提供路由規則,包含route_key
 
route_key:路由key ,作用是在交換機上通過route_key來把訊息路由到某個佇列上
 
RabbitMQ整體架構:
 

 

這些概念在rabbitMQ的web控制檯都可以看見:

 

 

 

 

三、交換機詳解
1.交換機屬性:
name:交換機名字
type:型別:direct,topic,fanout,headers
durability:是否需要持久化
autodelete: 假如沒有佇列繫結到該交換機,那麼該交換機會自動刪除
Internal: 當前交換機是否使用者rabbitmq內部使用不常用,預設為false
argurements: 擴充套件引數,使用者擴充套件AMQP定製化協議
 
2.直連交換機:direct exchange  訊息投遞時的key與佇列繫結routekey完全相同的佇列上面
 
3.主題交換機:topic exchange 投遞訊息是可以進行key的匹配,#匹配多個單詞,*匹配一個單詞(用.隔開),比如佇列A繫結的routekey:study.#。投遞訊息時設定的routekey.abc或者routekey.abc.def都可以投遞到佇列A上面;佇列B設定的routekey:study.*,那麼就只有routekey.abc可以投遞到佇列B
 
4.扇形交換機: fanout exchange 不會進行routekey的匹配,只要是該交換機的佇列都會被投遞。因為不會進行路由字串的匹配,所以這種交換的訊息投遞是最快的
 
5.頭部交換機:headers exchange  投遞的訊息頭裡面有一個特殊的key:“x-match”,有兩個值:all(預設),傳送訊息的header裡面的所有key都對應,才投遞;any,任意一個對應就投遞
 
 
 

相關文章