AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

說(shuō)說(shuō)MQ延遲隊(duì)列實(shí)現(xiàn)原理?

來(lái)源: 責(zé)編: 時(shí)間:2024-07-17 07:38:54 569觀看
導(dǎo)讀使用 RabbitMQ 和 RocketMQ 的人是幸運(yùn)的,因?yàn)檫@兩個(gè) MQ 自身提供了延遲隊(duì)列的實(shí)現(xiàn),不像用 Kafka 的同學(xué)那么苦逼,還要自己實(shí)現(xiàn)延遲隊(duì)列。當(dāng)然,這都是題外話,今天咱們重點(diǎn)來(lái)聊聊 RabbitMQ 延遲隊(duì)列的實(shí)現(xiàn)原理,以及 RabbitMQ

使用 RabbitMQ 和 RocketMQ 的人是幸運(yùn)的,因?yàn)檫@兩個(gè) MQ 自身提供了延遲隊(duì)列的實(shí)現(xiàn),不像用 Kafka 的同學(xué)那么苦逼,還要自己實(shí)現(xiàn)延遲隊(duì)列。當(dāng)然,這都是題外話,今天咱們重點(diǎn)來(lái)聊聊 RabbitMQ 延遲隊(duì)列的實(shí)現(xiàn)原理,以及 RabbitMQ 實(shí)現(xiàn)延遲隊(duì)列的優(yōu)缺點(diǎn)有哪些?cIB28資訊網(wǎng)——每日最新資訊28at.com

很多人知道使用 RabbitMQ 是可以實(shí)現(xiàn)延遲隊(duì)列的,但對(duì)于 RocketMQ 自身也提供了延遲隊(duì)列這件事卻持有不同態(tài)度,這是因?yàn)榫W(wǎng)上有些資料說(shuō) RocketMQ 和 Kafka 沒(méi)有內(nèi)置延遲隊(duì)列。其實(shí)這種說(shuō)法是因?yàn)椋琑ocketMQ 在早期版本中確實(shí)沒(méi)有內(nèi)置延遲隊(duì)列,但在 4.x 就內(nèi)置了 18 個(gè)級(jí)別的延遲隊(duì)列了(最長(zhǎng)支持 2 小時(shí)的延遲隊(duì)列),5.x 就支持隨機(jī)延遲時(shí)間的延遲隊(duì)列了,所以這里需要特殊強(qiáng)調(diào)一下。cIB28資訊網(wǎng)——每日最新資訊28at.com

1.什么是延遲隊(duì)列?

延遲隊(duì)列(Delay Queue)是一種特殊類型的隊(duì)列,它的主要特點(diǎn)是可以讓進(jìn)入隊(duì)列的元素在指定的延遲時(shí)間之后才被取出進(jìn)行處理。cIB28資訊網(wǎng)——每日最新資訊28at.com

延遲隊(duì)列的主要使用場(chǎng)景有以下這些:cIB28資訊網(wǎng)——每日最新資訊28at.com

  • 訂單超時(shí)處理:在電商系統(tǒng)中,如果用戶下單后未在一定時(shí)間內(nèi)支付,訂單可能會(huì)被自動(dòng)取消。可以將訂單放入延遲隊(duì)列,在設(shè)定的延遲時(shí)間(如 30 分鐘)后取出處理取消操作。
  • 任務(wù)重試:當(dāng)某個(gè)任務(wù)執(zhí)行失敗時(shí),將其放入延遲隊(duì)列,等待一段時(shí)間(如 5 分鐘)后重新執(zhí)行。
  • 消息延遲發(fā)送:某些消息不需要立即發(fā)送,而是在指定的延遲時(shí)間后發(fā)送,例如定時(shí)提醒消息。
  • 緩存過(guò)期處理:緩存中的數(shù)據(jù)可能有一定的有效期,將即將過(guò)期的數(shù)據(jù)放入延遲隊(duì)列,到期后進(jìn)行刪除或更新操作。

2.延遲任務(wù)實(shí)現(xiàn)方法

那么延遲隊(duì)列的實(shí)現(xiàn)方式有哪些呢?cIB28資訊網(wǎng)——每日最新資訊28at.com

延遲隊(duì)列的實(shí)現(xiàn)方式通常有以下幾種:cIB28資訊網(wǎng)——每日最新資訊28at.com

  • 基于 JDK 提供的 DelayQueue 來(lái)實(shí)現(xiàn):它是內(nèi)存級(jí)別的延遲隊(duì)列,重啟應(yīng)用之后消息會(huì)丟失,并且只支持單機(jī)版延遲隊(duì)列,所以一般不用。
  • 基于 MQ 的延遲隊(duì)列:例如使用 RabbitMQ 來(lái)實(shí)現(xiàn)延遲隊(duì)列,他們適合處理動(dòng)態(tài)和臨時(shí)延遲任務(wù),不像定時(shí)任務(wù)一樣,適合處理正式的、固定的延遲任務(wù)。
  • 基于定時(shí)任務(wù)組件實(shí)現(xiàn)延遲任務(wù):例如 XXLJob 或 Quartz 等框架來(lái)實(shí)現(xiàn)延遲任務(wù),他們適合處理固定(執(zhí)行)頻率的延遲任務(wù)。

我們通常會(huì)使用延遲隊(duì)列來(lái)存儲(chǔ)(和實(shí)現(xiàn))延遲消息,所以大部分時(shí)候,我們說(shuō)的延遲隊(duì)列和延遲消息其實(shí)是一回事。cIB28資訊網(wǎng)——每日最新資訊28at.com

3.使用RabbitMQ實(shí)現(xiàn)延遲隊(duì)列

使用 RabbitMQ 實(shí)現(xiàn)延遲隊(duì)列有以下兩種實(shí)現(xiàn)方式:cIB28資訊網(wǎng)——每日最新資訊28at.com

  • 通過(guò)死信隊(duì)列實(shí)現(xiàn)延遲任務(wù):將正常的消息放到?jīng)]有消息訂閱者的消息隊(duì)列(消息自然就會(huì)過(guò)期),等消息過(guò)期之后會(huì)進(jìn)入死信隊(duì)列,通過(guò)訂閱死信隊(duì)列消費(fèi)消息,從而實(shí)現(xiàn)延遲隊(duì)列,如下圖所示:

cIB28資訊網(wǎng)——每日最新資訊28at.com

  • 通過(guò)官方提供的延遲插件實(shí)現(xiàn)延遲功能

早期大部分公司都會(huì)采用第一種方式,而隨著 RabbitMQ 3.5.7(2015 年底發(fā)布)的延遲插件的發(fā)布,因?yàn)槠涫褂酶?jiǎn)單、更方便,所以它現(xiàn)在才是大家普通會(huì)采用的,實(shí)現(xiàn)延遲隊(duì)列的方式。cIB28資訊網(wǎng)——每日最新資訊28at.com

(1)實(shí)現(xiàn)原理分析

使用延遲插件的實(shí)現(xiàn)原理是通過(guò)創(chuàng)建一個(gè)延遲交換機(jī)(Delay Exchange),延遲消息首先會(huì)把消息投遞到延遲交換機(jī),并不是直接將消息投遞業(yè)務(wù)隊(duì)列(所以不會(huì)立即執(zhí)行),由延遲交換機(jī)控制消息在延遲一段時(shí)間后,再將消息投遞到真正的隊(duì)列中進(jìn)行消費(fèi),從而實(shí)現(xiàn)延遲隊(duì)列,它的實(shí)現(xiàn)流程如下圖所示:cIB28資訊網(wǎng)——每日最新資訊28at.com

cIB28資訊網(wǎng)——每日最新資訊28at.com

其中 Mnesia 可以理解為基于文件存儲(chǔ)的數(shù)據(jù)庫(kù)。cIB28資訊網(wǎng)——每日最新資訊28at.com

(2)優(yōu)缺點(diǎn)分析

使用死信隊(duì)列實(shí)現(xiàn)延遲任務(wù)有個(gè)缺點(diǎn),它不能實(shí)現(xiàn)隨機(jī)延遲任務(wù),每個(gè)無(wú)消費(fèi)者的隊(duì)列上只能設(shè)置一個(gè) ttl(消息過(guò)期時(shí)間),所以只能實(shí)現(xiàn)固定過(guò)期時(shí)間的延遲任務(wù)。cIB28資訊網(wǎng)——每日最新資訊28at.com

使用延遲插件實(shí)現(xiàn)延遲任務(wù)有以下兩個(gè)缺點(diǎn):cIB28資訊網(wǎng)——每日最新資訊28at.com

  • 消息丟失問(wèn)題:消息在真的被投遞到目標(biāo)消息隊(duì)列之前,是存放在接收到了這個(gè)消息的服務(wù)端本地的 Mnesia 里面。也就是說(shuō),如果這個(gè)時(shí)候還沒(méi)有刷新磁盤,那么消息就會(huì)丟失;如果這個(gè)節(jié)點(diǎn)不可用了,那么消息也同樣會(huì)丟失。
  • 高并發(fā)問(wèn)題:這種實(shí)現(xiàn)方式不支持高并發(fā)場(chǎng)景,因?yàn)樗挥幸粋€(gè)延遲交換機(jī),當(dāng)高并發(fā)或數(shù)據(jù)量比較大時(shí)執(zhí)行效率就會(huì)比較低。

本文鏈接:http://www.tebozhan.com/showinfo-26-101269-0.html說(shuō)說(shuō)MQ延遲隊(duì)列實(shí)現(xiàn)原理?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 微前端代碼隔離方案,手把手實(shí)現(xiàn)一個(gè) JS 沙箱隔離!

下一篇: 不掉頭發(fā)“逆向”旋轉(zhuǎn)驗(yàn)證碼

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Redmi Buds 4開(kāi)箱簡(jiǎn)評(píng):才199還有降噪 可以無(wú)腦入

    在上個(gè)月舉辦的Redmi Note11T Pro系列新機(jī)發(fā)布會(huì)上,除了兩款手機(jī)新品之外,Redmi還帶來(lái)了兩款TWS真無(wú)線藍(lán)牙耳機(jī)產(chǎn)品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們?cè)赗edmi Note11T
  • 把LangChain跑起來(lái)的三個(gè)方法

    使用LangChain開(kāi)發(fā)LLM應(yīng)用時(shí),需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過(guò)這個(gè)步驟先學(xué)習(xí)LLM模型的應(yīng)用,對(duì)Langchain進(jìn)行快速上手?本片講解3個(gè)把LangChain跑起來(lái)
  • K8S | Service服務(wù)發(fā)現(xiàn)

    一、背景在微服務(wù)架構(gòu)中,這里以開(kāi)發(fā)環(huán)境「Dev」為基礎(chǔ)來(lái)描述,在K8S集群中通常會(huì)開(kāi)放:路由網(wǎng)關(guān)、注冊(cè)中心、配置中心等相關(guān)服務(wù),可以被集群外部訪問(wèn);圖片對(duì)于測(cè)試「Tes」環(huán)境或者
  • 共享單車的故事講到哪了?

    來(lái)源丨海克財(cái)經(jīng)與共享充電寶相差不多,共享單車已很久沒(méi)有被國(guó)內(nèi)熱點(diǎn)新聞關(guān)照到了。除了一再漲價(jià)和用戶直呼用不起了。近日多家媒體再發(fā)報(bào)道稱,成都、天津、鄭州等地多個(gè)共享單
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚(yú)拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁(yè)“充值中心”入口上線了本機(jī)生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 品牌洞察丨服務(wù)本地,美團(tuán)直播成效幾何?

    來(lái)源:17PR7月11日,美團(tuán)App首頁(yè)推薦位出現(xiàn)“美團(tuán)直播”的固定入口。在直播聚合頁(yè)面,外賣“神槍手”直播間、美團(tuán)旅行直播間、美團(tuán)買菜直播間等均已上線,同時(shí)
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強(qiáng)5G Soc

    去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)屏,同時(shí)在快充
  • 英特爾Xe-HP項(xiàng)目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報(bào)道,英特爾高級(jí)副總裁兼加速計(jì)算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務(wù)器 GPU 已經(jīng)應(yīng)用于 oneAPI devcloud 云服
  • 榮耀Magic4 至臻版 首創(chuàng)智慧隱私通話 強(qiáng)勁影音系統(tǒng)

    2022年第一季度臨近尾聲,在該季度內(nèi),許多品牌陸續(xù)發(fā)布自己的最新產(chǎn)品,讓大家從全新的角度來(lái)了解當(dāng)今的手機(jī)技術(shù)。手機(jī)是電子設(shè)備中,更新迭代十分迅速的一款產(chǎn)品,基
Top