SpringBoot - 消息隊(duì)列RabbitMQ安裝測(cè)試

一.什么是消息隊(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-id 5672為訪(fǎng)問(wèn)端口號(hào),15672為Web管理界面端口。
  • 接下來(lái)就可以訪(fǎng)問(wèn)RabbitMQ的管理界面了,默認(rèn)用戶(hù)密碼:guest


    管理界面

三.RabbitMQ基本操作

新增交換器,可以選擇交換器的類(lèi)型以及是否持久

新增消息隊(duì)列

點(diǎn)擊交換器后,可以選擇綁定隊(duì)列

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 16,208評(píng)論 2 11
  • 來(lái)源 RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。支持消息的持久化、事務(wù)、擁塞控...
    jiangmo閱讀 10,513評(píng)論 2 34
  • 關(guān)于消息隊(duì)列,從前年開(kāi)始斷斷續(xù)續(xù)看了些資料,想寫(xiě)很久了,但一直沒(méi)騰出空,近來(lái)分別碰到幾個(gè)朋友聊這塊的技術(shù)選型,是時(shí)...
    預(yù)流閱讀 586,629評(píng)論 51 787
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 1.RabbitMQ概述 簡(jiǎn)介: MQ全稱(chēng)為Message Queue,消息隊(duì)列是應(yīng)用程序和應(yīng)用程序之間的通信方法...
    梁朋舉閱讀 50,551評(píng)論 0 47

友情鏈接更多精彩內(nèi)容