rabbitmq基礎(chǔ)知識

目錄:

1.rabbitmq好處:

2.應(yīng)用場景:

3.交換機類型:

4.消息基于什么進行傳輸:

5.如何確保消息正確的發(fā)送:

6.如何確保接收方消費了消息:

7.如何避免消息重復(fù)投遞和重復(fù)消費:

8.如何確保數(shù)據(jù)不被丟失:


1.rabbitmq好處:

1.流量削峰:避免大流量時,所有請求都同時操作數(shù)據(jù)庫。數(shù)據(jù)庫io是十分消耗資源的。

2.應(yīng)用解耦:應(yīng)用a需要對應(yīng)用b進行操作,例如訂單的下單后的減庫存操作。庫存應(yīng)用宕機后,避免因為庫存應(yīng)用的宕機,而導(dǎo)致操作報錯。

3.異步處理:避免串行操作,例如某個操作需要發(fā)送系統(tǒng)消息和發(fā)送短信的操作不應(yīng)該串行,而是同時進行,加快響應(yīng)。

2.應(yīng)用場景:

1.簡單隊列:

一個生產(chǎn)者------消息隊列-----一個消費者

2.工作隊列:

一個生產(chǎn)者-----消息隊列------多個消費者

輪詢:按照消息的先后依次分發(fā)給消費者

公平分發(fā):不會平均分發(fā),而是誰有空就誰消費

3.發(fā)布者訂閱模式:

一個生產(chǎn)者---交換機----多個隊列----隊列對應(yīng)的消費者

交換機沒有存儲數(shù)據(jù)的能力,隊列才有,所以交換機需要綁定隊列,交換機接收到生產(chǎn)者的數(shù)據(jù),推送給隊列。

4.topic主題模式:

主要交換機有路由鍵的存在,將路由鍵和隊列進行綁定,發(fā)送消息時,指定路由鍵的內(nèi)容,發(fā)送給綁定的隊列即可。

3.交換機類型:

1.fanout:當(dāng)有消息時,把消息發(fā)送給所有隊列。

2.topic:有路由鍵,將路由鍵和隊列進行綁定。

3.direct和header:這兩個不常用。

4.消息基于什么進行傳輸:

由于tcp創(chuàng)建和銷毀開銷大,所以消息一般基于信道傳輸。

信道是基于tcp連接的虛擬連接,一個tcp連接可以包含很多個信道。

5.如何確保消息正確的發(fā)送:

rabbitmq采用發(fā)送方確認(rèn)的模式,確保消息正確的發(fā)送到rabbitmq。

發(fā)送方確認(rèn)模式:一旦消息到達隊列后,會給發(fā)送方一個確認(rèn)的信息。而rabbitmq內(nèi)部錯誤沒有接收到時,會給發(fā)送發(fā)一個未確認(rèn)的信息。

6.如何確保接收方消費了消息:

rabbitmq采用接收方確認(rèn)模式。

每一條消息都會被接收方確認(rèn),一旦確認(rèn)消費了消息,rabbitmq才會將消息從隊列中刪除。

7.如何避免消息重復(fù)投遞和重復(fù)消費:

生產(chǎn)者每發(fā)送一條消息都會生產(chǎn)一個內(nèi)部消息id,防止重復(fù)投遞。

當(dāng)消費者消費時,每條消費的信息都有一個全局id,防止被重復(fù)消費。

8.如何確保數(shù)據(jù)不被丟失:

生產(chǎn)者不丟失數(shù)據(jù):

rabbitmq采用transaction和confirm來確保消息不被丟失。

消息隊列不丟失數(shù)據(jù):

一般采用持久化磁盤的操作。

消費者不丟失數(shù)據(jù):

采用消費確認(rèn)模式。

9.消息隊列的缺點:

1.系統(tǒng)復(fù)雜性增加。

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

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