[發(fā)明專利]一種消息隊(duì)列重試方法及設(shè)備有效
| 申請?zhí)枺?/td> | 202110373575.8 | 申請日: | 2021-04-07 |
| 公開(公告)號: | CN113064741B | 公開(公告)日: | 2022-04-12 |
| 發(fā)明(設(shè)計(jì))人: | 馬玉飛 | 申請(專利權(quán))人: | 上海萬物新生環(huán)保科技集團(tuán)有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F11/14 |
| 代理公司: | 上海百一領(lǐng)御專利代理事務(wù)所(普通合伙) 31243 | 代理人: | 汪祖樂 |
| 地址: | 200433 上海市楊浦*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 消息 隊(duì)列 重試 方法 設(shè)備 | ||
本申請的目的是提供一種消息隊(duì)列重試方法及設(shè)備,本申請通過消息隊(duì)列的消息協(xié)商器從消息的生產(chǎn)者接收目標(biāo)消息,目標(biāo)消息包括消息體,記錄目標(biāo)消息的創(chuàng)建時間、已重試次數(shù)并為配置過期時間和總重試次數(shù),并一并發(fā)送給對應(yīng)的消費(fèi)者,使得消費(fèi)在消費(fèi)所述目標(biāo)消息時根據(jù)已重試次數(shù)和總重試次數(shù),判斷目標(biāo)消息是否是最后一次重試,若是則在目標(biāo)消息消費(fèi)失敗時,結(jié)束對目標(biāo)消息的重試;或,在消費(fèi)目標(biāo)消息時,根據(jù)創(chuàng)建時間和過期時間,判斷目標(biāo)消息是否允許繼續(xù)重試,若否則在目標(biāo)消息消費(fèi)失敗時,結(jié)束對目標(biāo)消息的重試,實(shí)現(xiàn)了由消費(fèi)者來干預(yù)消息失敗時的重試策略,從而做出對應(yīng)的業(yè)務(wù)處理或提前結(jié)束重試等。
技術(shù)領(lǐng)域
本申請涉及分布式系統(tǒng)的技術(shù)領(lǐng)域,尤其涉及一種消息隊(duì)列重試方法及設(shè)備。
背景技術(shù)
現(xiàn)有技術(shù)中,消息隊(duì)列(Message Queue,MQ)在分布式系統(tǒng)中應(yīng)用十分廣泛,其在解耦、異步和削峰等問題的解決上,起到了很大的作用。目前,主流的MQ都支持失敗重試策略的配置,當(dāng)MQ消息消費(fèi)失敗時,可在一定時間內(nèi)進(jìn)行重試。但這些重試策略,都是由MQ的消息協(xié)商器broker來控制的,消費(fèi)者基本無法干預(yù)。
發(fā)明內(nèi)容
本申請的一個目的是提供一種消息隊(duì)列重試方法及設(shè)備,實(shí)現(xiàn)了在MQ的消息協(xié)商器下發(fā)消息時,增加消息的總重試次數(shù)、創(chuàng)建時間、過期時間及已重試次數(shù),由消費(fèi)者來干預(yù)消息失敗時的重試策略,使得消費(fèi)者能夠做出對應(yīng)的業(yè)務(wù)處理或提前結(jié)束重試等。
根據(jù)本申請的一個方面,提供了一種消息隊(duì)列重試方法,應(yīng)用于消息隊(duì)列的消息協(xié)商器端,其中,所述方法包括:
從消息的生產(chǎn)者接收目標(biāo)消息,所述目標(biāo)消息包括消息體;
記錄所述目標(biāo)消息的創(chuàng)建時間和已重試次數(shù),并為所述目標(biāo)消息配置過期時間和可重試的總重試次數(shù);
將所述目標(biāo)消息及其對應(yīng)的所述創(chuàng)建時間、所述已重試次數(shù)、所述總重試次數(shù)及過期時間一并下發(fā)給對應(yīng)的消費(fèi)者,使得所述消費(fèi)者在消費(fèi)所述目標(biāo)消息時,根據(jù)所述創(chuàng)建時間、所述已重試次數(shù)、所述總重試次數(shù)及過期時間,確定所述目標(biāo)消息是否重試。
進(jìn)一步地,上述方法中,所述方法還包括:
在所述目標(biāo)消息中設(shè)置一個用于指示所述目標(biāo)消息是否為最后一次重試的標(biāo)識;
接收所述消費(fèi)者發(fā)送的所述目標(biāo)消息的重試請求,并確定重試時間;
若所述重試時間已超過所述過期時間,且所述標(biāo)識用于指示所述目標(biāo)消息并非為最后一次重試,則設(shè)置所述標(biāo)識為用于指示所述目標(biāo)消息為最后一次重試;
將所述用于指示所述目標(biāo)消息為最后一次重試的標(biāo)識發(fā)送至所述消費(fèi)者。
進(jìn)一步地,上述方法中,所述方法還包括:
當(dāng)從消息的生產(chǎn)者接收到所述目標(biāo)消息時,初始化所述目標(biāo)消息的已重試次數(shù)為零。
進(jìn)一步地,上述方法中,所述方法還包括:
若所述目標(biāo)消息在消費(fèi)者端消費(fèi)失敗,從所述消息協(xié)商器接收所述目標(biāo)消息的重試請求時,累計(jì)所述目標(biāo)消息的已重試次數(shù)。
根據(jù)本申請的另一方面,還提供了一種消息隊(duì)列重試方法,應(yīng)用于消息隊(duì)列的消費(fèi)者端,其中,所述方法包括:
接收消息隊(duì)列的消息協(xié)商器下發(fā)的目標(biāo)消息及其對應(yīng)的創(chuàng)建時間、所述已重試次數(shù)、所述總重試次數(shù)及過期時間,所述目標(biāo)消息包括消息體;
在消費(fèi)所述目標(biāo)消息時,根據(jù)所述已重試次數(shù)和所述總重試次數(shù),判斷所述目標(biāo)消息是否是最后一次重試,若是,則在所述目標(biāo)消息消費(fèi)失敗時,結(jié)束對所述目標(biāo)消息的重試;或,
在消費(fèi)所述目標(biāo)消息時,根據(jù)所述創(chuàng)建時間和所述過期時間,判斷所述目標(biāo)消息是否允許繼續(xù)重試,若否,則在所述目標(biāo)消息消費(fèi)失敗時,結(jié)束對所述目標(biāo)消息的重試。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海萬物新生環(huán)保科技集團(tuán)有限公司,未經(jīng)上海萬物新生環(huán)保科技集團(tuán)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110373575.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 隊(duì)列調(diào)度系統(tǒng)及方法
- 一種從多隊(duì)列節(jié)點(diǎn)獲取消息的方法及系統(tǒng)
- 隊(duì)列請求處理方法和裝置
- 一種隊(duì)列清空方法以及相關(guān)設(shè)備
- 一種基于Linux通用塊層多隊(duì)列的優(yōu)化系統(tǒng)及方法
- 一種分離存儲的隊(duì)列實(shí)現(xiàn)方法及裝置
- 一種數(shù)據(jù)處理方法、裝置及計(jì)算機(jī)可讀存儲介質(zhì)
- 一種接口擁塞時延的計(jì)算方法及裝置
- 一種報文調(diào)度方法及裝置
- RDMA網(wǎng)絡(luò)下的網(wǎng)卡隊(duì)列創(chuàng)建方法以及裝置
- 一種短消息系統(tǒng)中對網(wǎng)元進(jìn)行重試的方法
- 一種操作重試的方法、系統(tǒng)及計(jì)算機(jī)裝置
- 固態(tài)儲存裝置及其讀取重試方法
- 一種應(yīng)用異常的處理方法、裝置、存儲介質(zhì)及處理器
- 容錯重試方法及裝置、終端
- 一種HTTP重試的方法和設(shè)備
- 任務(wù)失敗重試方法、裝置、計(jì)算機(jī)設(shè)備及存儲介質(zhì)
- 分布式重試方法、裝置、電子設(shè)備和存儲介質(zhì)
- 重試方法及裝置、計(jì)算機(jī)設(shè)備及計(jì)算機(jī)可讀存儲介質(zhì)
- 應(yīng)用執(zhí)行異常的重試方法、裝置、設(shè)備及介質(zhì)





