RabbitMQ(1)---基本概念

1、安裝RabbitMQhtml

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

 

 安裝好以後 瀏覽器訪問15672端口,能夠看到web管理端。默認的是用戶名密碼都是guestdocker

 2、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控制檯均可以看見:網絡

 

 

 

 

3、交換機詳解
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,任意一個對應就投遞
相關文章
相關標籤/搜索