[發(fā)明專利]一種通過消息隊(duì)列處理消息的方法、裝置和系統(tǒng)有效
| 申請?zhí)枺?/td> | 200910092421.0 | 申請日: | 2009-09-14 |
| 公開(公告)號: | CN102023974A | 公開(公告)日: | 2011-04-20 |
| 發(fā)明(設(shè)計(jì))人: | 王磊;范曉暉;劉越;于蓉蓉;鄭冬冬 | 申請(專利權(quán))人: | 中國移動通信集團(tuán)公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;G06F9/46 |
| 代理公司: | 北京鑫媛睿博知識產(chǎn)權(quán)代理有限公司 11297 | 代理人: | 龔家驊 |
| 地址: | 100032 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 通過 消息 隊(duì)列 處理 方法 裝置 系統(tǒng) | ||
技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種通過消息隊(duì)列處理消息的方法、裝置和系統(tǒng)。
背景技術(shù)
在數(shù)據(jù)業(yè)務(wù)技術(shù)中,消息是指在兩臺計(jì)算機(jī)間傳送的數(shù)據(jù)單位,可以非常簡單,例如只包含文本字符串;也可以更復(fù)雜,可能包含嵌入對象。消息隊(duì)列是在消息的傳輸過程中保存消息的容器,是一種分布式應(yīng)用間交換信息的消息處理技術(shù),可駐留在內(nèi)存或磁盤上,主要用于提供路由并保證消息的傳遞,為任何應(yīng)用程序提供消息處理和消息隊(duì)列功能,無論該應(yīng)用程序所在的計(jì)算機(jī)是否在同一個(gè)網(wǎng)絡(luò)上或者是否同時(shí)聯(lián)機(jī)。如果發(fā)送消息時(shí)接收者不可用,消息隊(duì)列會保留消息,直到該消息被應(yīng)用程序讀走。通過消息隊(duì)列,應(yīng)用程序可獨(dú)立地訪問消息,而不需要知道消息之間的位置關(guān)系,且消息隊(duì)列在繼續(xù)執(zhí)行后續(xù)步驟之前,不需要等待接收程序接收消息。
消息隊(duì)列為構(gòu)造以同步或異步方式實(shí)現(xiàn)的分布式應(yīng)用提供了松耦合方法,消息隊(duì)列的API(Application?Programming?Interface,應(yīng)用程序編程接口)調(diào)用被嵌入到新的或現(xiàn)存的應(yīng)用中,通過消息發(fā)送到基于內(nèi)存或磁盤的消息隊(duì)列中。消息隊(duì)列可用在應(yīng)用中以執(zhí)行多種功能,比如要求服務(wù)、交換信息或異步處理等。
衡量消息隊(duì)列是否優(yōu)秀的標(biāo)準(zhǔn)包括性能和可靠性,應(yīng)用于大規(guī)模的分布式系統(tǒng)的消息隊(duì)列,消息量巨大,因此,對消息隊(duì)列的性能要求非常高,要求有高并發(fā)和高吞吐量。為滿足高效率的要求,現(xiàn)有技術(shù)通常使用的是內(nèi)存消息隊(duì)列,消息保存在內(nèi)存中,以保證消息處理速度;為實(shí)現(xiàn)可靠性,一些消息隊(duì)列使用內(nèi)存消息隊(duì)列+文件系統(tǒng)的方式實(shí)現(xiàn)消息的持久化,或者完全使用數(shù)據(jù)庫來實(shí)現(xiàn)消息隊(duì)列;還有一些消息隊(duì)列使用內(nèi)存消息隊(duì)列+數(shù)據(jù)庫的方式實(shí)現(xiàn)消息的持久化,但并沒有采用觸發(fā)式方式在消息隊(duì)列和數(shù)據(jù)庫之間實(shí)現(xiàn)消息同步。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷:
內(nèi)存消息隊(duì)列降低了系統(tǒng)的可靠性,一旦出現(xiàn)掉電、意外死機(jī),或者程序崩潰等情況,無法保證消息的完整性,還可能丟掉大量未來得及處理的消息;而使用內(nèi)存消息隊(duì)列+文件系統(tǒng)或內(nèi)存消息隊(duì)列+數(shù)據(jù)庫的方式實(shí)現(xiàn)消息的持久性時(shí),效率很低,而且實(shí)現(xiàn)復(fù)雜,不易使用。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種通過消息隊(duì)列處理消息的方法、裝置和系統(tǒng),用于兼顧消息隊(duì)列的性能和可靠性。
本發(fā)明實(shí)施例提供了一種通過消息隊(duì)列處理消息的方法,包括以下步驟:
接收來自消息生產(chǎn)設(shè)備的消息,將所述消息發(fā)送到內(nèi)存中的第一消息隊(duì)列,并根據(jù)所述消息中的標(biāo)記位將所述消息添加到數(shù)據(jù)庫中;
將所述數(shù)據(jù)庫中的消息發(fā)送到內(nèi)存中的第二消息隊(duì)列,所述第二消息隊(duì)列用于存儲供消息使用設(shè)備獲取并處理的消息;
接收所述消息使用設(shè)備處理過的消息,將所述消息發(fā)送到所述第一消息隊(duì)列中,并根據(jù)所述處理過的消息的標(biāo)記位從所述數(shù)據(jù)庫中刪除或修改所述處理過的消息。
本發(fā)明實(shí)施例還提供了一種消息隊(duì)列服務(wù)器,包括:
收發(fā)模塊,用于接收來自消息生產(chǎn)設(shè)備的消息,將所述消息發(fā)送到內(nèi)存中的第一消息隊(duì)列,并接收消息使用設(shè)備處理過的消息,將所述處理過的消息發(fā)送到所述第一消息隊(duì)列中;
數(shù)據(jù)庫模塊,用于存儲消息,并將所述消息發(fā)送到內(nèi)存中的第二消息隊(duì)列;
添加模塊,與所述數(shù)據(jù)庫模塊和所述收發(fā)模塊連接,用于根據(jù)所述收發(fā)模塊發(fā)送到所述第一消息隊(duì)列中的來自所述消息生產(chǎn)設(shè)備的消息的標(biāo)記位,將所述消息添加到所述數(shù)據(jù)庫模塊中;
修改模塊,與所述收發(fā)模塊和所述數(shù)據(jù)庫模塊連接,用于根據(jù)所述收發(fā)模塊發(fā)送到所述第一消息隊(duì)列中的所述消息使用設(shè)備處理過的消息的標(biāo)記位,將所述處理過的消息從所述數(shù)據(jù)庫模塊中刪除或者在所述數(shù)據(jù)庫模塊中修改所述處理過的消息。
本發(fā)明實(shí)施例還提供了一種通過消息隊(duì)列處理消息的系統(tǒng),包括消息生產(chǎn)設(shè)備、消息隊(duì)列服務(wù)器和消息使用設(shè)備,
所述消息生產(chǎn)設(shè)備,用于生成消息,并將所述消息發(fā)送到所述消息隊(duì)列服務(wù)器;
所述消息隊(duì)列服務(wù)器,用于接收來自所述消息生產(chǎn)設(shè)備的消息,將所述消息發(fā)送到內(nèi)存中的第一消息隊(duì)列,并根據(jù)所述消息中的標(biāo)記位將所述消息添加到數(shù)據(jù)庫中;將所述數(shù)據(jù)庫中的消息發(fā)送到內(nèi)存中的第二消息隊(duì)列,使消息使用設(shè)備獲取并處理所述消息;接收所述消息使用設(shè)備處理過的消息,將所述消息發(fā)送到所述第一消息隊(duì)列中,并根據(jù)所述處理過的消息的標(biāo)記位從所述數(shù)據(jù)庫中刪除或修改所述消息;
所述消息使用設(shè)備,用于從所述第二消息隊(duì)列中獲取并處理消息,將處理完畢的消息添加標(biāo)記位,并發(fā)送到所述第一消息隊(duì)列。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國移動通信集團(tuán)公司,未經(jīng)中國移動通信集團(tuán)公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910092421.0/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:用于在令牌與驗(yàn)證器之間進(jìn)行認(rèn)證的網(wǎng)絡(luò)助手
- 下一篇:用于捕獲場景的深度數(shù)據(jù)并且應(yīng)用計(jì)算機(jī)動作的方法
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F17-00 特別適用于特定功能的數(shù)字計(jì)算設(shè)備或數(shù)據(jù)處理設(shè)備或數(shù)據(jù)處理方法
G06F17-10 .復(fù)雜數(shù)學(xué)運(yùn)算的
G06F17-20 .處理自然語言數(shù)據(jù)的
G06F17-30 .信息檢索;及其數(shù)據(jù)庫結(jié)構(gòu)
G06F17-40 .數(shù)據(jù)的獲取和記錄
G06F17-50 .計(jì)算機(jī)輔助設(shè)計(jì)
- 隊(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ì)
- 一種接口擁塞時(shí)延的計(jì)算方法及裝置
- 一種報(bào)文調(diào)度方法及裝置
- RDMA網(wǎng)絡(luò)下的網(wǎng)卡隊(duì)列創(chuàng)建方法以及裝置





