消息隊(duì)列

1.什么是消息隊(duì)列

隊(duì)列是存放消息的容器

2.為什么要使用隊(duì)列

  • 解耦:例:系統(tǒng)A放消息到隊(duì)列,BCD系統(tǒng)按需訂閱,增減訂閱無(wú)需修改代碼;或BCD系統(tǒng)中某一個(gè)掛了,幾分鐘內(nèi)消息可緩沖在隊(duì)列,增加系統(tǒng)可用性。
  • 異步:串行變并行。例:發(fā)短信郵件消息各需50s,則一共需要100s,隊(duì)列并行50s?;蛘咧暗幕卣{(diào)是A隔一段時(shí)間去輪詢B,或者B去調(diào)用A的api通知,現(xiàn)B完成后發(fā)消息給MQ,MQ去通知A
  • 削峰 :5000條數(shù)據(jù)請(qǐng)求穿透數(shù)據(jù)庫(kù)造成壓力;放在隊(duì)列消費(fèi)者每次取1000條即可

3.ActiviMQ RabbitMQ RocketMQ Kafka比較

ActiviMQ :6000+;資料豐富;性能差
RabbitMQ :12000+;輕量迅捷,客戶端語(yǔ)言多;消息堆積支持差,性能差
RocketMQ :十萬(wàn)級(jí);性能高,穩(wěn)定性高,優(yōu)化響應(yīng)時(shí)延,社區(qū)活躍;兼容性差
Kafka:百萬(wàn)級(jí);為大數(shù)據(jù)而生,性能好,兼容性好;響應(yīng)時(shí)延高,topic達(dá)到上百個(gè),性能大幅下降

4.RabbitMQ - AMQP協(xié)議的實(shí)現(xiàn)

4.1 RabbitMQ的特點(diǎn)

  • 可靠【持久化、發(fā)布確認(rèn)、消費(fèi)確認(rèn)】
  • 靈活的路由 【路由指定對(duì)應(yīng)的路由策略】
  • 消息集群【多個(gè)服務(wù)器組合成為一個(gè)邏輯broker】
  • 高可用【通過(guò)集群鏡像實(shí)現(xiàn)】
  • 多種協(xié)議【RabbitMQ 支持多種消息隊(duì)列協(xié)議,比如 STOMP、MQTT】
  • 多語(yǔ)言客戶端
  • 管理界面
  • 跟蹤機(jī)制【如果消息異常,RabbitMQ 提供消息跟蹤機(jī)制,可以找出發(fā)生了什么】

4.2 RabbitMQ的組成部分和工作流程

  • Broker:中間件實(shí)體機(jī)
  • 交換器Exchange
  • 隊(duì)列 Queue
  • 綁定 Bind
  • 路由 RoutingKey
  • 信道 Channel 虛擬概念

工作流程:

  • Producer連接到隊(duì)列Broker:創(chuàng)建Connection,打開(kāi)Channel
  • Channel指定交換機(jī)類型、名稱、是否持久化
  • 生產(chǎn)者發(fā)布消息:指定RoutingKey 和消息是否持久化
  • Exchange根據(jù)RountingKey將消息放進(jìn)對(duì)應(yīng)隊(duì)列
  • 消費(fèi)者監(jiān)聽(tīng)到消息后開(kāi)始業(yè)務(wù)處理

4.3 RabbitMQ交換機(jī)的四種類型的特點(diǎn),以及使用方法。=消息如何路由

direct:直接類型,routingKey嚴(yán)格匹配
finout:廣播類型,通道上所有的
topic :通配符類型
header[場(chǎng)景少,基本不用]:通過(guò)header信息進(jìn)行匹配,match分any部分匹配 all全部匹配

4.4 如何確保消息正確地發(fā)送至RabbitMQ? 如何確保消息接收方消費(fèi)了消息?

1) 發(fā)布時(shí):

  • 發(fā)布者確認(rèn):與路由無(wú)關(guān),channel.waitForConfirm(); 批量channel.waitForConfirmOrDie();
  • 備用交換器
  • 事務(wù)
  • 消息持久化

4.5 如何避免消息重復(fù)投遞或重復(fù)消費(fèi)?

冪等性設(shè)計(jì)

4.6 如何避免消息不丟失

4.6 消息丟失怎么辦

4.6 消息丟失怎么辦

4.6 消息丟失怎么辦

4.6 消息丟失怎么辦

4.6 消息丟失怎么辦

4.6 虛擬主機(jī)是什么?

5.Kafka

最后編輯于
?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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