两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種通過消息隊(duì)列處理消息的方法、裝置和系統(tǒng)的制作方法

文檔序號:6575521閱讀:224來源:國知局
專利名稱:一種通過消息隊(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ī)是否在同一個網(wǎng)絡(luò)上或者是否同時聯(lián)機(jī)。 如果發(fā)送消息時接收者不可用,消息隊(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í)現(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ì)列。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)利用內(nèi)存消息隊(duì)列高并發(fā)和 高吞吐量的優(yōu)點(diǎn),提高了處理消息的效率,并保證了數(shù)據(jù)的可靠性,完全保留了數(shù)據(jù)庫 的事務(wù)性優(yōu)點(diǎn),除了完成消息的分發(fā)和傳遞,還保留消息的處理結(jié)果,隨時可供其他用 途;由于消息實(shí)時的保存在數(shù)據(jù)庫,而數(shù)據(jù)庫可以很方便的進(jìn)行各種操作,便于跟蹤當(dāng) 前消息隊(duì)列的使用情況,發(fā)現(xiàn)故障和進(jìn)行優(yōu)化。


為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對本發(fā)明實(shí) 施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附 圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性 的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例中的一種通過消息隊(duì)列處理消息的方法流程圖;圖2為本發(fā)明實(shí)施例應(yīng)用場景中的一種通過消息隊(duì)列處理消息的系統(tǒng)結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例應(yīng) 用場景中的通過消息隊(duì)列處理消息的流程圖;圖4為本發(fā)明實(shí)施例中的一種消息隊(duì)列服務(wù)器的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例應(yīng)用場景中的消息隊(duì)列服務(wù)器的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例中的一種通過消息隊(duì)列處理消息的系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供的技術(shù)方案中,通過觸發(fā)來實(shí)現(xiàn)數(shù)據(jù)庫和消息隊(duì)列之間的同 步,利用內(nèi)存消息隊(duì)列的高性能和數(shù)據(jù)庫的高可靠性,將內(nèi)存消息隊(duì)列和數(shù)據(jù)可的優(yōu)點(diǎn) 結(jié)合起來,實(shí)現(xiàn)了一種以數(shù)據(jù)庫作為持久化工具的消息隊(duì)列,解決了性能和可靠性問題。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其 他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。如圖1所示,為本發(fā)明實(shí)施例中的一種通過消息隊(duì)列處理消息的方法流程圖, 包括以下步驟步驟101,接收來自消息生產(chǎn)設(shè)備的消息,將該消息發(fā)送到內(nèi)存中的第一消息隊(duì) 列,并根據(jù)消息中的標(biāo)記位將該消息添加到數(shù)據(jù)庫中。步驟102,將數(shù)據(jù)庫中的消息發(fā)送到內(nèi)存中的第二消息隊(duì)列。其中,第二消息隊(duì)列用于存儲供消息使用設(shè)備獲取并處理的消息。步驟103,接收消息使用設(shè)備處理過的消息,將該消息發(fā)送到第一消息隊(duì)列中, 并根據(jù)該處理過的消息的標(biāo)記位從數(shù)據(jù)庫中刪除或修改該處理過的消息。如圖2所示,為本發(fā)明實(shí)施例應(yīng)用場景中的一種通過消息隊(duì)列處理消息的系 統(tǒng)結(jié)構(gòu)示意圖,該系統(tǒng)包括消息生產(chǎn)設(shè)備100、第一消息隊(duì)列200、事務(wù)處理服務(wù)程序 300、數(shù)據(jù)庫和數(shù)據(jù)庫觸發(fā)器400、觸發(fā)器外部過程500、第二消息隊(duì)列600和消息使用設(shè) 備700。其中,第一消息隊(duì)列200、事務(wù)處理服務(wù)程序300、數(shù)據(jù)庫400 (包括數(shù)據(jù)庫觸發(fā) 器)、觸發(fā)器外部過程500和第二消息隊(duì)列600組成完整的觸發(fā)式數(shù)據(jù)庫持久化的消息隊(duì) 列服務(wù)器800,為消息發(fā)送設(shè)備100和消息使用設(shè)備700提供消息交換服務(wù)。以下結(jié)合上述應(yīng)用場景,對本發(fā)明實(shí)施例中的通過消息隊(duì)列處理消息的方法進(jìn) 行詳細(xì)、具體的描述。如圖3所示,為本發(fā)明實(shí)施例應(yīng)用場景中的通過消息隊(duì)列處理消息的流程圖, 具體包括以下步驟步驟301,創(chuàng)建第一消息隊(duì)列200。具體地,在消息隊(duì)列服務(wù)器800中創(chuàng)建內(nèi)存消息隊(duì)列,作為第一消息隊(duì)列200, 該第一消息隊(duì)列200用于接收來自各個消息生產(chǎn)設(shè)備100的消息,并將該消息傳送給事務(wù) 處理服務(wù)程序200。步驟302,消息生產(chǎn)設(shè)備100生成消息,將消息發(fā)送到第一消息隊(duì)列200。其中,該消息攜帶一個標(biāo)記位,用于指明如何處理該消息,包括對該消息進(jìn)行數(shù)據(jù)庫添加、刪除、修改操作。由于該消息剛剛由消息生產(chǎn)設(shè)備100生成,并未被消息使用設(shè)備700處理過,因此,該消息攜帶的標(biāo)記位指示將該消息添加到數(shù)據(jù)庫400中。步驟303,啟動事務(wù)處理服務(wù)程序300。步驟304,事務(wù)處理服務(wù)程序300獲取第一消息隊(duì)列200中的消息,根據(jù)該消息 攜帶的插入標(biāo)記,將該消息添加到數(shù)據(jù)庫400中。步驟305,在數(shù)據(jù)庫400中建立數(shù)據(jù)庫觸發(fā)器。步驟306,建立觸發(fā)器外部過程500。具體地,建立觸發(fā)器外部過程500包括,按照數(shù)據(jù)庫系統(tǒng)的外部過程規(guī)范建 立外觸發(fā)器外部過程500,以及按照數(shù)據(jù)庫系統(tǒng)規(guī)范為數(shù)據(jù)庫系統(tǒng)加載觸發(fā)器外部過程 500。觸發(fā)器外部過程500用于在數(shù)據(jù)庫400內(nèi)的消息增加時被觸發(fā)開始工作,把新增的 消息發(fā)送到內(nèi)存。步驟307,當(dāng)數(shù)據(jù)庫中的消息發(fā)生增加操作時,數(shù)據(jù)庫觸發(fā)器被觸發(fā),將該消息 發(fā)送到觸發(fā)器外部過程500。步驟308,建立第二消息隊(duì)列600。具體地,在消息隊(duì)列服務(wù)器800上創(chuàng)建內(nèi)存消息隊(duì)列,作為第二消息隊(duì)列600, 該第二消息隊(duì)列600用于接收來自觸發(fā)器外部過程500的消息,并將該消息傳送給消息使 用設(shè)備700。步驟309,觸發(fā)器外部過程500將消息放入第二消息隊(duì)列600。步驟310,消息使用設(shè)備700從第二消息隊(duì)列600中獲取并處理消息,將處理完 畢的消息添加標(biāo)記位,并發(fā)送到第一消息隊(duì)列200。步驟311,事務(wù)處理服務(wù)程序300獲取第一消息隊(duì)列200中消息,根據(jù)該消息攜 帶的修改標(biāo)記,在數(shù)據(jù)庫400中刪除或修改該消息。具體地,由于該消息已經(jīng)被消息使用設(shè)備700處理過,因此,該消息攜帶的修 改標(biāo)記將該消息從數(shù)據(jù)庫400中刪除,或者在數(shù)據(jù)庫100中修改該消息。需要說明的是,本發(fā)明實(shí)施例方法可以根據(jù)實(shí)際需要對各個步驟順序進(jìn)行調(diào)
iF. ο本發(fā)明實(shí)施例提供的技術(shù)方案中,消息生成后發(fā)送到的第一消息隊(duì)列200和觸 發(fā)后發(fā)送到的第二消息隊(duì)列600都是內(nèi)存消息隊(duì)列,因此,處理速度極快,保證了消息 處理的效率;消息進(jìn)入第一消息隊(duì)列200后立即被放入數(shù)據(jù)庫400,消息得到可靠的保 存。對消息生產(chǎn)設(shè)備100和消息使用設(shè)備700而言,消息隊(duì)列服務(wù)器800相當(dāng)于一個普 通的內(nèi)存消息隊(duì)列,與普通的內(nèi)存消息隊(duì)列的不同之處在于,消息使用設(shè)備700對消息 操作完畢后,要向第一消息隊(duì)列200發(fā)送一個處理后的消息,來刪除或者修改數(shù)據(jù)庫400 里記錄的消息,即只有消息使用設(shè)備700正確接收并且處理完消息,明確發(fā)出操作指令 之后,該消息才會被刪除或修改,因此,數(shù)據(jù)庫中的消息不會因?yàn)榉?wù)器掉電或意外死 機(jī)等原因而丟失。本發(fā)明實(shí)施例在上述實(shí)施方式中提供了通過消息隊(duì)列處理消息的方法和應(yīng)用場 景,相應(yīng)地,本發(fā)明實(shí)施例還提供了應(yīng)用上述通過消息隊(duì)列處理消息的方法的裝置和系 統(tǒng)。如圖4所示,為本發(fā)明實(shí)施例中的一種消息隊(duì)列服務(wù)器的結(jié)構(gòu)示意圖,包括
收發(fā)模塊410,用于接收來自消息生產(chǎn)設(shè)備的消息,將所述消息發(fā)送到內(nèi)存中的第一消息隊(duì)列,并接收消息使用設(shè)備處理過的消息,將所述處理過的消息發(fā)送到所述第 一消息隊(duì)列中。數(shù)據(jù)庫模塊420,用于存儲消息,并將所述消息發(fā)送到內(nèi)存中的第二消息隊(duì)列。添加模塊430,與數(shù)據(jù)庫模塊420和收發(fā)模塊410連接,用于根據(jù)收發(fā)模塊410 發(fā)送到所述第一消息隊(duì)列中的來自所述消息生產(chǎn)設(shè)備的消息的標(biāo)記位,將所述消息添加 到數(shù)據(jù)庫模塊420中。修改模塊440,與收發(fā)模塊410和數(shù)據(jù)庫模塊420連接,用于根據(jù)收發(fā)模塊410 發(fā)送到所述第一消息隊(duì)列中的所述消息使用設(shè)備處理過的消息的標(biāo)記位,將所述處理過 的消息從數(shù)據(jù)庫模塊420中刪除或者在數(shù)據(jù)庫模塊420中修改上述處理過的消息。如圖5所示,為本發(fā)明實(shí)施例應(yīng)用場景中的消息隊(duì)列服務(wù)器的結(jié)構(gòu)示意圖,具 體包括創(chuàng)建模塊510、數(shù)據(jù)庫模塊520、收發(fā)模塊530、添加模塊540和修改模塊550,其 中,創(chuàng)建模塊510,與數(shù)據(jù)庫模塊520和收發(fā)模塊530連接,用于創(chuàng)建第一消息隊(duì)列 和所述第二消息隊(duì)列,分別供收發(fā)模塊530和數(shù)據(jù)庫模塊520使用。數(shù)據(jù)庫模塊520,用于存儲消息,并將所述消息發(fā)送到內(nèi)存中的第二消息隊(duì)列。數(shù)據(jù)庫模塊520,具體用于通過數(shù)據(jù)庫觸發(fā)器將所述消息發(fā)送到觸發(fā)器外部過 程,并通過所述觸發(fā)器外部過程將所述消息發(fā)送到所述第二消息隊(duì)列。收發(fā)模塊530,用于接收來自消息生產(chǎn)設(shè)備的消息,將所述消息發(fā)送到內(nèi)存中的 第一消息隊(duì)列,并接收所述消息使用設(shè)備處理過的消息,將所述處理過的消息發(fā)送到所 述第一消息隊(duì)列中。添加模塊540,與數(shù)據(jù)庫模塊520和收發(fā)模塊530連接,用于根據(jù)收發(fā)模塊530 發(fā)送到所述第一消息隊(duì)列中的來自所述消息生產(chǎn)設(shè)備的消息的標(biāo)記位,將所述消息添加 到數(shù)據(jù)庫模塊520中。上述添加模塊540,具體用于根據(jù)所述第一消息隊(duì)列中的消息攜帶的插入標(biāo)記, 將所述第一消息隊(duì)列中消息添加到數(shù)據(jù)庫模塊520中。修改模塊550,與收發(fā)模塊530和數(shù)據(jù)庫模塊520連接,用于根據(jù)收發(fā)模塊530 發(fā)送到所述第一消息隊(duì)列中的所述消息使用設(shè)備處理過的消息的標(biāo)記位,將所述處理過 的消息從數(shù)據(jù)庫模塊520中刪除或者在數(shù)據(jù)庫模塊520中修改上述處理過的消息。本發(fā)明實(shí)施例充分利用了內(nèi)存消息隊(duì)列高并發(fā)和高吞吐量的優(yōu)點(diǎn),提高了處理 消息的效率,并保證了數(shù)據(jù)的可靠性,完全保留了數(shù)據(jù)庫的事務(wù)性優(yōu)點(diǎn),除了完成消息 的分發(fā)和傳遞,還保留消息的處理結(jié)果,隨時可供其他用途;由于消息實(shí)時的保存在數(shù) 據(jù)庫,而數(shù)據(jù)庫可以很方便的進(jìn)行各種操作,便于跟蹤當(dāng)前消息隊(duì)列的使用情況,發(fā)現(xiàn) 故障和進(jìn)行優(yōu)化。如圖6所示,為本發(fā)明實(shí)施例中的一種通過消息隊(duì)列處理消息的系統(tǒng)結(jié)構(gòu)示意 圖,包括消息生產(chǎn)設(shè)備610、消息隊(duì)列服務(wù)器620和消息使用設(shè)備630,其中,消息生產(chǎn)設(shè)備610,用于生成消息,并將所述消息發(fā)送到所述消息隊(duì)列服務(wù)器 620。消息隊(duì)列服務(wù)器620,用于接收來自所述消息生產(chǎn)設(shè)備610的消息,將所述消息發(fā)送到內(nèi)存中的第一消息隊(duì) 列,并根據(jù)所述消息中的標(biāo)記位將所述消息添加到數(shù)據(jù)庫 中;將所述數(shù)據(jù)庫中的消息發(fā)送到內(nèi)存中的第二消息隊(duì)列,使消息使用設(shè)備630獲取并 處理所述消息;接收所述消息使用設(shè)備處理過的消息,將所述消息發(fā)送到所述第一消息 隊(duì)列中,并根據(jù)所述處理過的消息的標(biāo)記位從所述數(shù)據(jù)庫中刪除或修改所述消息;消息使用設(shè)備630,用于從所述第二消息隊(duì)列中獲取并處理消息,將處理完畢的 消息添加標(biāo)記位,并發(fā)送到所述第一消息隊(duì)列。上述消息隊(duì)列服務(wù)器620,還用于創(chuàng)建內(nèi)存消息隊(duì)列,將所述內(nèi)存消息隊(duì)列作為 所述第一消息隊(duì)列。上述消息隊(duì)列服務(wù)器620,還用于啟動事物處理服務(wù)程序,所述事物處理服務(wù)程 序用于根據(jù)所述第一消息隊(duì)列中的消息攜帶的標(biāo)記位將所述消息添加到數(shù)據(jù)庫中。上述消息隊(duì)列服務(wù)器620,還用于啟動事物處理服務(wù)程序,所述事物處理服務(wù)程 序用于根據(jù)所述第一消息隊(duì)列中的消息攜帶的標(biāo)記位,對所述數(shù)據(jù)庫中的消息進(jìn)行刪除 或修改。上述消息隊(duì)列服務(wù)器620,還用于在所述數(shù)據(jù)庫中建立數(shù)據(jù)庫觸發(fā)器,并建立 觸發(fā)器外部過程,所述數(shù)據(jù)庫觸發(fā)器用于將所述數(shù)據(jù)庫中的消息發(fā)送到所述觸發(fā)器外部 過程,所述觸發(fā)器外部過程用于將來自所述數(shù)據(jù)庫觸發(fā)器的消息發(fā)送到所述第二消息隊(duì) 列。上述消息隊(duì)列服務(wù)器620,還用于創(chuàng)建內(nèi)存消息隊(duì)列,將所述內(nèi)存消息隊(duì)列作為 所述第二消息隊(duì)列。本發(fā)明實(shí)施例充分利用了內(nèi)存消息隊(duì)列高并發(fā)和高吞吐量的優(yōu)點(diǎn),效率遠(yuǎn)遠(yuǎn)超 過使用文件系統(tǒng)持久化或者單純以數(shù)據(jù)庫為基礎(chǔ)實(shí)現(xiàn)的消息隊(duì)列,在內(nèi)部實(shí)現(xiàn)中,事務(wù) 處理服務(wù)程序和數(shù)據(jù)庫之間采用連接池,減少數(shù)據(jù)庫并發(fā),而又充分利用數(shù)據(jù)庫性能, 采用的是觸發(fā)式操作,比傳統(tǒng)的輪詢或者其他方式效率更高,CPU利用率更低;采用數(shù) 據(jù)庫作為持久化媒介,充分利用了數(shù)據(jù)庫的可靠性優(yōu)點(diǎn),通過利用數(shù)據(jù)庫自身攜帶的備 份恢復(fù)功能,更保證了數(shù)據(jù)的可靠性;完全保留了數(shù)據(jù)庫的事務(wù)性優(yōu)點(diǎn),除了完成消息 的分發(fā)和傳遞,還保留消息的處理結(jié)果,隨時可供其他用途;由于消息實(shí)時的保存在數(shù) 據(jù)庫,而數(shù)據(jù)庫可以很方便的進(jìn)行各種操作,便于跟蹤當(dāng)前消息隊(duì)列的使用情況,發(fā)現(xiàn) 故障和進(jìn)行優(yōu)化。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借 助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者 是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做 出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì) 中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),個人計(jì)算機(jī),服務(wù)器,或者網(wǎng) 絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù) 人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤 飾也應(yīng)視本發(fā)明的保護(hù)范圍。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分 布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個或多個裝置中。上述實(shí)施例的模塊可以集成于一體,也可以分離部署;可以合并為一個模塊,也可以進(jìn) 一步拆分成多個子模塊。上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。以上公開的僅為本發(fā)明的幾個具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種通過消息隊(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ù)庫中刪除或修改所述處理過的消息。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)消息中的標(biāo)記位將消息添加到數(shù) 據(jù)庫中,具體為根據(jù)所述第一消息隊(duì)列中的消息攜帶的插入標(biāo)記,將所述消息添加到所述數(shù)據(jù)庫中。
3.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)處理過的消息的標(biāo)記位從數(shù)據(jù)庫 中刪除或修改處理過的消息,具體為根據(jù)所述處理過的消息攜帶的修改標(biāo)記,將所述處理過的消息從所述數(shù)據(jù)庫中刪除 或者在所述數(shù)據(jù)庫中修改所述處理過的消息。
4.如權(quán)利要求1所述的方法,其特征在于,所述將數(shù)據(jù)庫中的消息發(fā)送到內(nèi)存中的第 二消息隊(duì)列,具體為通過所述數(shù)據(jù)庫中的數(shù)據(jù)庫觸發(fā)器將所述數(shù)據(jù)庫中的消息發(fā)送到觸發(fā)器外部過程, 并通過所述觸發(fā)器外部過程將所述消息發(fā)送到所述第二消息隊(duì)列。
5.如權(quán)利要求1所述的方法,其特征在于,所述接收消息使用設(shè)備處理過的消息之 前,還包括所述消息使用設(shè)備從所述第二消息隊(duì)列中獲取并處理消息,將處理完畢的消息添加 標(biāo)記位,并發(fā)送到所述第一消息隊(duì)列。
6.—種消息隊(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ù)庫模塊中修改所述處理過的消息。
7.如權(quán)利要求6所述消息隊(duì)列服務(wù)器,其特征在于,所述添加模塊,具體用于根據(jù)所述第一消息隊(duì)列中的消息攜帶的插入標(biāo)記,將所述 第一消息隊(duì)列中消息添加到所述數(shù)據(jù)庫模塊中。
8.如權(quán)利要求6所述消息隊(duì)列服務(wù)器,其特征在于,還包括創(chuàng)建模塊,與所述收發(fā)模塊連接,用于創(chuàng)建所述第一消息隊(duì)列和所述第二消息隊(duì)列,分別供所述收發(fā)模塊和所述數(shù)據(jù)庫模塊使用。
9.如權(quán)利要求6所述消息隊(duì)列服務(wù)器,其特征在于,所述數(shù)據(jù)庫模塊,具體用于通過數(shù)據(jù)庫觸發(fā)器將所述消息發(fā)送到觸發(fā)器外部過程, 并通過所述觸發(fā)器外部過程將所述消息發(fā)送到所述第二消息隊(duì)列。
10.—種通過消息隊(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ì)列。
全文摘要
本發(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ì)列的性能和可靠性。本發(fā)明實(shí)施例同樣公開了一種應(yīng)用上述方法的裝置和系統(tǒng)。
文檔編號G06F9/46GK102023974SQ20091009242
公開日2011年4月20日 申請日期2009年9月14日 優(yōu)先權(quán)日2009年9月14日
發(fā)明者于蓉蓉, 劉越, 王磊, 范曉暉, 鄭冬冬 申請人:中國移動通信集團(tuán)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
大洼县| 东乌珠穆沁旗| 枞阳县| 罗城| 获嘉县| 屏南县| 瑞丽市| 满城县| 都江堰市| 阿荣旗| 海晏县| 南昌市| 通化县| 新宁县| 木兰县| 平远县| 三都| 余姚市| 卓尼县| 吴忠市| 保康县| 冷水江市| 贺州市| 巴林右旗| 沧州市| 察雅县| 高阳县| 大宁县| 延吉市| 砀山县| 久治县| 屯留县| 读书| 达拉特旗| 桦南县| 麻城市| 三台县| 普定县| 上栗县| 修文县| 静乐县|