一.什么是消息隊(duì)列
在高并發(fā)環(huán)境下,由于來(lái)不及同步處理,請(qǐng)求往往會(huì)發(fā)生堵塞,比如說(shuō),大量的insert,update之類(lèi)的請(qǐng)求同時(shí)到達(dá)MySQL,直接導(dǎo)致無(wú)數(shù)的行鎖表鎖,甚至最后請(qǐng)求會(huì)堆積過(guò)多,從而觸發(fā)too many connections錯(cuò)誤。通過(guò)使用消息隊(duì)列,我們可以異步處理請(qǐng)求,從而緩解系統(tǒng)的壓力。
核心概念
Message
消息,消息是不具名的,它由消息頭和消息體組成。消息體是不透明的,而消息頭則由一系列的可選屬性組成,這些屬性包括routing-key(路由鍵)、priority(相對(duì)于其他消息的優(yōu)先權(quán))、delivery-mode(指出該消息可能需要持久性存儲(chǔ))等。Publisher
消息的生產(chǎn)者,也是一個(gè)向交換器發(fā)布消息的客戶(hù)端應(yīng)用程序。-
Exchange
交換器,用來(lái)接收生產(chǎn)者發(fā)送的消息并將這些消息路由給服務(wù)器中的隊(duì)列。
Exchange有4種類(lèi)型:direct(默認(rèn)),fanout, topic, 和headers,不同類(lèi)型的Exchange轉(zhuǎn)發(fā)消息的策略有所區(qū)別。-
direct:只有完全匹配才接受消息
direct -
fanout:不篩選,消息全部接受。
fanout -
topic:條件匹配。#代表0個(gè)字符或者N個(gè)字符,*代表1個(gè)或者N個(gè)字符。
topic
-
Queue
消息隊(duì)列,用來(lái)保存消息直到發(fā)送給消費(fèi)者。它是消息的容器,也是消息的終點(diǎn)。一個(gè)消息可投入一個(gè)或多個(gè)隊(duì)列。消息一直在隊(duì)列里面,等待消費(fèi)者連接到這個(gè)隊(duì)列將其取走。Binding
綁定,用于消息隊(duì)列和交換器之間的關(guān)聯(lián)。一個(gè)綁定就是基于路由鍵將交換器和消息隊(duì)列連接起來(lái)的路由規(guī)則,所以可以將交換器理解成一個(gè)由綁定構(gòu)成的路由表。
Exchange 和Queue的綁定可以是多對(duì)多的關(guān)系。Connection
網(wǎng)絡(luò)連接,比如一個(gè)TCP連接。Channel
信道,多路復(fù)用連接中的一條獨(dú)立的雙向數(shù)據(jù)流通道。信道是建立在真實(shí)的TCP連接內(nèi)的虛擬連接,AMQP 命令都是通過(guò)信道發(fā)出去的,不管是發(fā)布消息、訂閱隊(duì)列還是接收消息,這些動(dòng)作都是通過(guò)信道完成。因?yàn)閷?duì)于操作系統(tǒng)來(lái)說(shuō)建立和銷(xiāo)毀 TCP 都是非常昂貴的開(kāi)銷(xiāo),所以引入了信道的概念,以復(fù)用一條 TCP 連接。Consumer
消息的消費(fèi)者,表示一個(gè)從消息隊(duì)列中取得消息的客戶(hù)端應(yīng)用程序。Virtual Host
虛擬主機(jī),表示一批交換器、消息隊(duì)列和相關(guān)對(duì)象。虛擬主機(jī)是共享相同的身份認(rèn)證和加密環(huán)境的獨(dú)立服務(wù)器域。每個(gè) vhost 本質(zhì)上就是一個(gè) mini 版的 RabbitMQ 服務(wù)器,擁有自己的隊(duì)列、交換器、綁定和權(quán)限機(jī)制。vhost 是 AMQP 概念的基礎(chǔ),必須在連接時(shí)指定,RabbitMQ 默認(rèn)的 vhost 是 / 。Broker
表示消息隊(duì)列服務(wù)器實(shí)體
二.安裝RabbitMQ
當(dāng)然繼續(xù)使用我們的神器Docker,依次輸入指令即可
-
docker pull rabbitMQ:3.6-rc-management其中帶有management后綴代表有Web管理界面 -
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq container-id5672為訪(fǎng)問(wèn)端口號(hào),15672為Web管理界面端口。 -
接下來(lái)就可以訪(fǎng)問(wèn)RabbitMQ的管理界面了,默認(rèn)用戶(hù)密碼:guest
管理界面
三.RabbitMQ基本操作



有關(guān)于消息隊(duì)列的介紹和Web端的基本調(diào)試就到這里。之后我們來(lái)學(xué)習(xí)SpringBoot中調(diào)用消息隊(duì)列。



