一 .作用
(1)解耦:在項目啟動之初是很難預(yù)測未來會遇到什么困難由捎,消息中間件在處理過程中插入了一個隱含的诀紊,基于數(shù)據(jù)的接口層,兩邊都實現(xiàn)這個接口隅俘,這樣就允許獨立的修改或者擴展兩邊的處理過程邻奠,只要兩邊遵守相同的接口約束即可。
(2)冗余(存儲):在某些情況下處理數(shù)據(jù)的過程中會失敗为居,消息中間件允許把數(shù)據(jù)持久化
(3)擴展性:消息中間件解耦了應(yīng)用的過程碌宴,所以提供消息入隊和處理的效率是很容易的,只需要增加處理流程就可以了蒙畴。
(4)削峰:在訪問量劇增的情況下贰镣,但是應(yīng)用仍然需要發(fā)揮作用,但是這樣的突發(fā)流量并不常見膳凝。而使用消息中間件采用隊列的形式可以減少突發(fā)訪問壓力碑隆,不會因為突發(fā)的超時負荷要求而崩潰
(5)可恢復(fù)性:當系統(tǒng)一部分組件失效時,不會影響到整個系統(tǒng)蹬音。消息中間件降低了進程間的耦合性上煤,當一個處理消息的進程掛掉后,加入消息中間件的消息仍然可以在系統(tǒng)恢復(fù)后重新處理
(6)順序保證:在大多數(shù)場景下著淆,處理數(shù)據(jù)的順序也很重要劫狠,大部分消息中間件支持一定的順序性
(7)緩沖:消息中間件通過一個緩沖層來幫助任務(wù)最高效率的執(zhí)行
(8)異步通信:通過把消息發(fā)送給消息中間件,消息中間件并不立即處理它永部,后續(xù)在慢慢處理独泞。
(9)? AMQP:高級消息隊列協(xié)議,是應(yīng)用層協(xié)議的一個開放標準苔埋,為面向消息的中間件設(shè)計
二 .執(zhí)行過程
(1) .客戶端連接到消息隊列服務(wù)器懦砂,打開一個Channel。
(2) .客戶端聲明一個Exchange组橄,并設(shè)置相關(guān)屬性荞膘。
(3) .客戶端聲明一個Queue,并設(shè)置相關(guān)屬性晨炕。
(4) .客戶端使用Routing key衫画,在Exchange和Queue之間建立好綁定關(guān)系毫炉。
(5) .客戶端投遞消息到Exchange
三 .隊列模式
1.簡單隊列
2.Work模式
?說明 : channel.basicQos(1); 同一時刻服務(wù)器只會發(fā)送一條記錄給消費者瓮栗,體現(xiàn)work模式下的能者多勞
3.訂閱模式
說明 :一個生產(chǎn)者多個消費者;每個消費者都有自己的隊列费奸; 生產(chǎn)者將消息發(fā)送到交換機;每個隊列都要綁定到交換機;生產(chǎn)者發(fā)送的消息經(jīng)過交換機達到隊列髓削,實現(xiàn)一個消息被多個消費者獲然赝臁;
4.路由模式
說明 :交換機模式為direct時生效缨历;將隊列綁定到交換機上同時賦予route_key以蕴; 將消息推送到交換機時 指定消息key;當route_key和消息key相同時辛孵,消息就會推送到指定隊列
5.主題模式:將路由鍵和某模式進行匹配
四 .sprigboot整合rabbitMQ
1. 在pom中導(dǎo)入meven依賴
2.在配置文件中添加rabbitMQ的配置信息
3.編寫rabbitMQConfig類
4.定義消費者