課程介紹
1. 學(xué)習(xí)目標(biāo)
能夠獨(dú)立搭建RabbitMQ并實(shí)現(xiàn)消息發(fā)送和接收
2 學(xué)習(xí)內(nèi)容
• RabbitMQ的環(huán)境搭建
• 使用純Java發(fā)送和接收消息
• 使用SpringBoot發(fā)送和接收消息
• 實(shí)戰(zhàn)案例開(kāi)發(fā)
RabbitMQ是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開(kāi)源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務(wù)器是用Erlang語(yǔ)言編寫(xiě)的,而集群和故障轉(zhuǎn)移是構(gòu)建在開(kāi)放電信平臺(tái)框架上的。所有主要的編程語(yǔ)言均有與代理接口通訊的客戶端庫(kù)。
• 什么是MQ?
MQ全稱為Message Queue, 消息隊(duì)列(MQ)是一種應(yīng)用程序?qū)?yīng)用程序的通信方法。
• 要解決什么樣的問(wèn)題?
在項(xiàng)目中,將一些無(wú)需即時(shí)返回且耗時(shí)的操作提取出來(lái),進(jìn)行了異步處理,而這種異步處理的方式大大的節(jié)省了服務(wù)器的請(qǐng)求響應(yīng)時(shí)間,從而提高了系統(tǒng)的吞吐量。
Rabbit科技有限公司開(kāi)發(fā)了RabbitMQ,并提供對(duì)其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合資企業(yè),2010年4月被VMware旗下的SpringSource收購(gòu)。RabbitMQ在2013年5月成為GoPivotal的一部分。
• 安裝Linux以及必要的依賴包(Centos7)
• 下載RabbitMQ的安裝包
• 安裝,修改相關(guān)配置
RabbitMQ是一套開(kāi)源(MPL)的消息隊(duì)列服務(wù)軟件,是由 LShift 提供的一個(gè) Advanced Message Queuing Protocol (AMQP) 的開(kāi)源實(shí)現(xiàn),由以高性能、健壯以及可伸縮性出名的 Erlang 寫(xiě)成。
RabbitMQ服務(wù)支持下列操作系統(tǒng):
RabbitMQ支持下列編程語(yǔ)言:
Server:又稱Broker接收客戶端的連接,實(shí)現(xiàn)AMQP實(shí)體服務(wù)
Connection:鏈接,用于應(yīng)用程序鏈接到Broker
Channel:網(wǎng)絡(luò)通道,Channel是進(jìn)行消息讀寫(xiě)的一個(gè)通道每一個(gè)Channel都表示一個(gè)會(huì)話,有點(diǎn)類似我們之前的Session概念
Message:消息,消息就是我們真正用來(lái)進(jìn)行傳輸?shù)臄?shù)據(jù),Message由兩部分組成,Properties和Body,Properties用于對(duì)消息就行修飾,比如優(yōu)先級(jí)或是否持久等,Body則是消息數(shù)據(jù)的主體
Virtual host:虛擬地址,用于進(jìn)行邏輯隔離,一個(gè)Server擁有過(guò)多個(gè)Vitual hsot,一個(gè)Virual hsot會(huì)擁有多個(gè)Exchange(交換機(jī))和Queue(隊(duì)列)
Exchange:交換機(jī),用于具體接收消息并將消息根據(jù)綁定路由key存入到指定的隊(duì)列中
Binding:綁定,就是將Exchange和Queue鏈接在一起,通過(guò)一個(gè)Routing key進(jìn)行綁定
Routing key:路由規(guī)則,消息發(fā)送到Exchang后會(huì)根據(jù)這個(gè)規(guī)則將消息存入對(duì)應(yīng)的Queue
Queue:隊(duì)列也稱Message Queue簡(jiǎn)稱MQ,用于存放消息,并使用隊(duì)列的結(jié)構(gòu)先進(jìn)先出、后進(jìn)后出
3. RabbiMQ執(zhí)行流程
RabbitMQ主要特性
• 可伸縮性:集群服務(wù)
• 消息持久化:從內(nèi)存持久化消息到硬盤(pán),再?gòu)挠脖P(pán)加載到內(nèi)存