本申請(qǐng)涉及通信技術(shù)領(lǐng)域,尤其涉及一種消息處理方法、設(shè)備及系統(tǒng)。
背景技術(shù):
在大型分布式應(yīng)用中,消息中間件作為異步/解耦的方案已經(jīng)成為整個(gè)分布式體系中不可或缺的一環(huán)。然而,在消息處理過(guò)程中,不可避免的需要考慮到業(yè)務(wù)操作和發(fā)送消息的一致性:即不能沒(méi)做業(yè)務(wù)操作就發(fā)消息;不能做了業(yè)務(wù)操作但沒(méi)發(fā)消息;不能業(yè)務(wù)操作只做了一部分,就發(fā)消息。通常業(yè)務(wù)操作包涵應(yīng)用本地?cái)?shù)據(jù)庫(kù)的數(shù)據(jù)變更,而發(fā)消息是應(yīng)用到消息隊(duì)列的一次遠(yuǎn)程通信,這兩者是完全獨(dú)立的。
一般地,針對(duì)在消息發(fā)送的過(guò)程中,將本地?cái)?shù)據(jù)庫(kù)事務(wù)及消息隊(duì)列的通信視為一體,同時(shí)成功同時(shí)失敗的問(wèn)題,包括以下幾種方案:
(1)將數(shù)據(jù)庫(kù)、消息隊(duì)列等抽象成資源,并引入事務(wù)管理器來(lái)管理資源,最后通過(guò)兩階段提交協(xié)議在全局事務(wù)中協(xié)調(diào)多個(gè)資源的事務(wù),以此做到消息發(fā)送的一致性。
(2)在消息發(fā)送一致性問(wèn)題上不強(qiáng)調(diào)實(shí)時(shí)一致性,假設(shè)業(yè)務(wù)在處理過(guò)程中就會(huì)隨機(jī)出現(xiàn)問(wèn)題,并暫時(shí)容忍這種問(wèn)題帶來(lái)的短暫不一致,通過(guò)補(bǔ)償回查的方式,查找遺漏處理的消息,并通過(guò)調(diào)用應(yīng)用系統(tǒng)提供的業(yè)務(wù)檢查接口,判斷遺漏消息的處理結(jié)果,以此保證消息處理與事務(wù)操作的一致性。
上述第一種方案引入了分布式事務(wù),會(huì)帶來(lái)一些性能開(kāi)銷并增加系統(tǒng)復(fù)雜性;同時(shí)對(duì)業(yè)務(wù)系統(tǒng)侵入較大,在不需要事務(wù)處理與消息發(fā)送實(shí)時(shí)一致性的情況下,過(guò)于復(fù)雜。第二種方案通過(guò)消息回查機(jī)制確實(shí)能達(dá)到最終一致性,但在回查上比較繁瑣,要求應(yīng)用系統(tǒng)編寫檢查業(yè)務(wù)操作是否成功的代碼。若應(yīng)用系統(tǒng)發(fā)消息的業(yè)務(wù)節(jié)點(diǎn)非常多,那么需要編寫回查的業(yè)務(wù) 代碼量將直線上升。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)上述消息發(fā)送的一致性的問(wèn)題提供一種消息處理方法、設(shè)備及系統(tǒng)。
有鑒于此,本申請(qǐng)?zhí)峁┮环N應(yīng)用設(shè)備的消息處理方法,該方法包括如下步驟:
根據(jù)事務(wù)操作,生成對(duì)應(yīng)的消息及所述消息的標(biāo)識(shí)信息;
向?qū)?yīng)的消息設(shè)備發(fā)送所述消息及所述標(biāo)識(shí)信息;
執(zhí)行所述事務(wù)操作,并將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)所述事務(wù)操作被執(zhí)行完畢時(shí),所述標(biāo)識(shí)信息存在于所述標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
進(jìn)一步的,所述消息處于待處理狀態(tài)。
進(jìn)一步的,該方法還包括:
當(dāng)執(zhí)行完畢所述事務(wù)操作,向所述消息設(shè)備發(fā)送關(guān)于所述消息的消息處理指令。
進(jìn)一步的,將所述標(biāo)識(shí)信息保存至所述標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作與所述事務(wù)操作屬于同一個(gè)原子操作。
進(jìn)一步的,所述將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)包括:
當(dāng)執(zhí)行完畢所述事務(wù)操作,將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
對(duì)應(yīng)地,本申請(qǐng)還提供一種消息設(shè)備的消息處理方法,其中,該方法包括:
接收對(duì)應(yīng)的應(yīng)用設(shè)備發(fā)送的消息及所述消息的標(biāo)識(shí)信息;
根據(jù)所述消息更新對(duì)應(yīng)的待處理消息集合;
根據(jù)所述待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢;
根據(jù)對(duì)應(yīng)的查詢結(jié)果處理所述待處理消息。
進(jìn)一步的,所述根據(jù)所述消息更新對(duì)應(yīng)的待處理消息集合包括:
將所述消息設(shè)置為待處理狀態(tài),并將所述消息添加至對(duì)應(yīng)的待處理消息集合。
進(jìn)一步的,該方法還包括:
接收所述應(yīng)用設(shè)備發(fā)送的消息處理指令;
根據(jù)所述消息處理指令對(duì)對(duì)應(yīng)消息進(jìn)行處理;
根據(jù)處理后的所述對(duì)應(yīng)消息更新所述待處理消息集合。
進(jìn)一步的,所述根據(jù)所述待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢包括:
當(dāng)所述待處理消息集合中待處理消息的存續(xù)時(shí)長(zhǎng)超過(guò)預(yù)定的處理時(shí)長(zhǎng)閾值,根據(jù)所述待處理信息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
進(jìn)一步的,該方法還包括:
根據(jù)待處理消息在所述待處理消息集合中的存續(xù)時(shí)長(zhǎng)信息確定所述處理時(shí)長(zhǎng)閾值。
進(jìn)一步的,所述根據(jù)對(duì)應(yīng)的查詢結(jié)果處理所述待處理消息包括:
若對(duì)應(yīng)的查詢結(jié)果非空,提交所述待處理消息;若所述查詢結(jié)果為空,刪除所述待處理消息;
根據(jù)相應(yīng)的處理結(jié)果更新所述待處理消息集合。
本申請(qǐng)還提供一種用于消息處理的應(yīng)用設(shè)備,其中,該設(shè)備包括:
第一裝置,用于根據(jù)事務(wù)操作,生成對(duì)應(yīng)的消息及所述消息的標(biāo)識(shí)信息;
第三裝置,用于向?qū)?yīng)的消息設(shè)備發(fā)送所述消息及所述標(biāo)識(shí)信息;
第五裝置,用于執(zhí)行所述事務(wù)操作,并將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)所述事務(wù)操作被執(zhí)行完畢時(shí),所述標(biāo)識(shí)信息存在于所述標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
進(jìn)一步地,所述消息處于待處理狀態(tài)。
進(jìn)一步地,該設(shè)備還包括:
第七裝置,用于當(dāng)執(zhí)行完畢所述事務(wù)操作,向所述消息設(shè)備發(fā)送關(guān)于所述消息的消息處理指令。
進(jìn)一步地,將所述標(biāo)識(shí)信息保存至所述標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作與所述事務(wù)操作屬于同一個(gè)原子操作。
進(jìn)一步地,所述將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)包括:
當(dāng)執(zhí)行完畢所述事務(wù)操作,將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
對(duì)應(yīng)地,本申請(qǐng)?zhí)峁┮环N用于消息處理的消息設(shè)備,其中,該設(shè)備包括:
第二裝置,用于接收對(duì)應(yīng)的應(yīng)用設(shè)備發(fā)送的消息及所述消息的標(biāo)識(shí)信息;
第四裝置,用于根據(jù)所述消息更新對(duì)應(yīng)的待處理消息集合;
第六裝置,用于根據(jù)所述待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢;
第八裝置,用于根據(jù)對(duì)應(yīng)的查詢結(jié)果處理所述待處理消息。
進(jìn)一步地,所述第四裝置,用于將所述消息設(shè)置為待處理狀態(tài),并將所述消息添加至對(duì)應(yīng)的待處理消息集合。
進(jìn)一步地,該設(shè)備還包括:
第十裝置,用于接收所述應(yīng)用設(shè)備發(fā)送的消息處理指令;
第十二裝置,用于根據(jù)所述消息處理指令對(duì)對(duì)應(yīng)消息進(jìn)行處理;
第十四裝置,用于根據(jù)處理后的所述對(duì)應(yīng)消息更新所述待處理消息集合。
進(jìn)一步地,所述第六裝置,用于當(dāng)所述待處理消息集合中待處理消息的存續(xù)時(shí)長(zhǎng)超過(guò)預(yù)定的處理時(shí)長(zhǎng)閾值,根據(jù)所述待處理信息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
進(jìn)一步地,該設(shè)備還包括:
第十六裝置,用于根據(jù)待處理消息在所述待處理消息集合中的存續(xù)時(shí)長(zhǎng)信息確定所述處理時(shí)長(zhǎng)閾值。
進(jìn)一步地,所述第八裝置用于:
若對(duì)應(yīng)的查詢結(jié)果非空,提交所述待處理消息;若所述查詢結(jié)果為空,刪除所述待處理消息;
根據(jù)相應(yīng)的處理結(jié)果更新所述待處理消息集合。
本申請(qǐng)還提供一種消息處理系統(tǒng),該系統(tǒng)包括前述的應(yīng)用設(shè)備和前述的消息設(shè)備。
與現(xiàn)有技術(shù)相比,本申請(qǐng)所述的消息處理方法及設(shè)備,通過(guò)在事務(wù)操作時(shí),為消息設(shè)置標(biāo)識(shí)信息,并將消息及其標(biāo)識(shí)消息從應(yīng)用設(shè)備傳輸至消 息設(shè)備。同時(shí)執(zhí)行所述事務(wù)操作,將所述標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)所述事務(wù)操作被執(zhí)行完畢時(shí),所述標(biāo)識(shí)信息存在于所述標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。從而可得出,只有執(zhí)行成功的事務(wù),其對(duì)應(yīng)的數(shù)據(jù)庫(kù)中才存在消息的標(biāo)識(shí)信息,在消息設(shè)備回查遺漏處理的消息的處理情況時(shí),只需要查詢應(yīng)用設(shè)備的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中是否存在對(duì)應(yīng)的標(biāo)識(shí)信息,即可確保消息發(fā)送與事務(wù)處理的一致性。本申請(qǐng)的消息處理系統(tǒng)包括前述應(yīng)用設(shè)備及消息設(shè)備,通過(guò)增加一個(gè)消息的標(biāo)識(shí)信息的概念,將消息及事務(wù)統(tǒng)一起來(lái),很完美地解決了消息發(fā)送最終一致性的問(wèn)題。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1為本申請(qǐng)用于消息處理的應(yīng)用設(shè)備一實(shí)施例的原理框圖;
圖2為本申請(qǐng)用于消息處理的消息設(shè)備一實(shí)施例的原理框圖;
圖3為本申請(qǐng)消息處理系統(tǒng)一實(shí)施例的原理框圖;
圖4為本申請(qǐng)應(yīng)用設(shè)備消息處理方法一實(shí)施例的流程圖;
圖5為本申請(qǐng)消息設(shè)備消息處理方法一實(shí)施例的流程圖;
圖6為本申請(qǐng)消息設(shè)備消息處理方法又一實(shí)施例的流程圖;
圖7為本申請(qǐng)消息處理方法一實(shí)施例的流程圖;
圖8為本申請(qǐng)消息處理方法又一實(shí)施例的流程圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。
在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
為更進(jìn)一步闡述本申請(qǐng)所采取的技術(shù)手段及取得的效果,下面結(jié)合附圖及較佳實(shí)施例,對(duì)本申請(qǐng)的技術(shù)方案,進(jìn)行清楚和完整的描述。
本申請(qǐng)的消息處理系統(tǒng)1,通過(guò)應(yīng)用設(shè)備2將事務(wù)操作時(shí)生成的消息及該消息的標(biāo)識(shí)信息發(fā)送至消息設(shè)備3,同時(shí)應(yīng)用設(shè)備2事務(wù)操作完成時(shí),標(biāo)識(shí)信息便存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中。消息設(shè)備3接收應(yīng)用設(shè)備2發(fā)送的消息及該消息的標(biāo)識(shí)信息,放置在待處理消息集合中,根據(jù)待處理消息的標(biāo)識(shí)信息,查詢對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4是否存在該標(biāo)識(shí)信息,根據(jù)查詢結(jié)果對(duì)待處理消息進(jìn)行處理。
如圖1所示,本申請(qǐng)?zhí)峁┮环N用于消息處理的應(yīng)用設(shè)備2,該設(shè)備包括:
第一裝置21,用于根據(jù)事務(wù)操作,生成對(duì)應(yīng)的消息及消息的標(biāo)識(shí)信息。
第三裝置22,用于向?qū)?yīng)的消息設(shè)備3發(fā)送消息及標(biāo)識(shí)信息。
第五裝置23,用于執(zhí)行事務(wù)操作,并將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4,其中,僅當(dāng)事務(wù)操作被執(zhí)行完畢時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4。
在該實(shí)施例中,應(yīng)用設(shè)備2通過(guò)第一裝置21生成與事務(wù)操作對(duì)應(yīng)的消息及消息的標(biāo)識(shí)信息,此處消息的標(biāo)識(shí)信息與消息唯一對(duì)應(yīng)。消息及消息標(biāo)識(shí)的生成時(shí)間可以為事務(wù)開(kāi)始時(shí),也可以為事務(wù)請(qǐng)求時(shí),或者其它合適的時(shí)間,具體時(shí)間不做限制。消息及消息的標(biāo)識(shí)信息的生成順序也不做限定。第三裝 置22向?qū)?yīng)的消息設(shè)備3發(fā)送消息及標(biāo)識(shí)信息時(shí),可將消息的標(biāo)識(shí)信息設(shè)置到消息的消息實(shí)體內(nèi),與消息一起發(fā)送至消息設(shè)備3,如此確保消息與其標(biāo)識(shí)信息的唯一對(duì)應(yīng)。第五裝置23將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4的操作,可以與事務(wù)操作屬于同一個(gè)原子操作,也可以是在確保事務(wù)操作完成的情況下的獨(dú)立操作。只要保證在事務(wù)操作成功時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4即可。另外,標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4用于存儲(chǔ)標(biāo)識(shí)信息,其可以設(shè)置在應(yīng)用設(shè)備2內(nèi),也可以設(shè)置應(yīng)用設(shè)備2外。該標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4也可以通過(guò)應(yīng)用設(shè)備2建立的用于存儲(chǔ)標(biāo)識(shí)信息的表實(shí)現(xiàn)。
在其中一個(gè)實(shí)施例中,消息處于待處理狀態(tài)。
在該實(shí)施例中,事務(wù)操作未結(jié)束前,應(yīng)用設(shè)備2針對(duì)該事務(wù)操作生成的消息應(yīng)處于待處理狀態(tài)。此狀態(tài)可通過(guò)應(yīng)用設(shè)備2的動(dòng)作實(shí)現(xiàn),也可通過(guò)消息設(shè)備3的動(dòng)作來(lái)實(shí)現(xiàn)。應(yīng)用設(shè)備實(shí)現(xiàn)的方式一般包括:在將消息發(fā)送給消息設(shè)備3前,添加消息設(shè)備3可識(shí)別的消息處于待處理狀態(tài)的標(biāo)記,并將攜帶此標(biāo)記的消息發(fā)送至消息設(shè)備3;在將消息發(fā)送給消息設(shè)備3后,向消息設(shè)備3發(fā)送消息處于待處理狀態(tài)的指令,消息設(shè)備3通過(guò)該指令將此消息設(shè)置為待處理狀態(tài)。在第二種實(shí)現(xiàn)方式中,應(yīng)用設(shè)備2可將消息、消息的標(biāo)識(shí)信息以及消息處于帶出來(lái)狀態(tài)的指令同時(shí)發(fā)送至消息設(shè)備3,當(dāng)然也可分開(kāi)發(fā)送,但是確保發(fā)送的時(shí)效性,例如,需要確保在事務(wù)操作未結(jié)束前,將該事務(wù)操作對(duì)應(yīng)的消息應(yīng)處于待處理狀態(tài)的指令發(fā)送至消息設(shè)備3中。
在其中一個(gè)實(shí)施例中,該設(shè)備還包括:第七裝置24,用于當(dāng)執(zhí)行完畢事務(wù)操作,向消息設(shè)備3發(fā)送關(guān)于消息的消息處理指令。
在該實(shí)施例中,當(dāng)事務(wù)操作完畢,應(yīng)用設(shè)備的第七裝置24根據(jù)該事務(wù)的操作結(jié)果,向消息設(shè)備3發(fā)送關(guān)于該事務(wù)操作對(duì)應(yīng)的消息處理指令。若事務(wù)操作成功,向消息設(shè)備3發(fā)送消息提交指令;若事務(wù)操作失敗,則向消息設(shè)備3發(fā)送消息刪除(回滾)指令。由于消息設(shè)備3可能會(huì)同時(shí)處理多個(gè)事務(wù)操作的消息,為確保應(yīng)用設(shè)備2將事務(wù)操作結(jié)果所對(duì)應(yīng)的消息處理指令發(fā)送至消息設(shè)備3時(shí),能夠準(zhǔn)確的對(duì)應(yīng)到該事務(wù)操作的消息,此時(shí),消息處理指令可攜帶該消息的標(biāo)識(shí)信息,該標(biāo)識(shí)信息不僅與事務(wù)操作中的消息唯一對(duì)應(yīng),還需要攜帶消息設(shè)備3可識(shí)別的事務(wù)識(shí)別信息,即消息設(shè)備3接收到事務(wù)操 作結(jié)果的指令時(shí),能夠根據(jù)指令中的標(biāo)識(shí)信息,對(duì)應(yīng)至消息設(shè)備3中某個(gè)事務(wù)的某條消息,進(jìn)一步根據(jù)指令內(nèi)容對(duì)該消息進(jìn)行處理。另外,本申請(qǐng)中應(yīng)用設(shè)備2發(fā)送的消息指令,如何準(zhǔn)確地對(duì)應(yīng)至消息設(shè)備3中的消息的實(shí)現(xiàn)方法不做具體限制,消息設(shè)備3可具有與應(yīng)用設(shè)備2配合實(shí)現(xiàn)的消息管理機(jī)制,只要能夠?qū)崿F(xiàn)上述對(duì)應(yīng)即可。
在其中一個(gè)實(shí)施例中,將標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4的操作與事務(wù)操作屬于同一個(gè)原子操作。
在該實(shí)施例中,原子操作具有不可分割性,在執(zhí)行完畢之前不會(huì)被任何其它事務(wù)或任務(wù)中斷,并且,同一個(gè)原子操作中的所有操作全部成功時(shí),該原子操作才成功;其中的操作只要有一個(gè)失敗,該原子操作也失敗。將標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4的操作與事務(wù)操作屬于同一個(gè)原子操作,如此,便實(shí)現(xiàn)了事務(wù)操作成功與標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4的一致性。進(jìn)一步,可通過(guò)檢查消息的標(biāo)識(shí)信息是否存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4,判斷該消息對(duì)應(yīng)的事務(wù)操作是否完成,不需要調(diào)用應(yīng)用設(shè)備2的事務(wù)操作檢查接口進(jìn)行一一查詢,便可實(shí)現(xiàn)事務(wù)操作與消息發(fā)送的一致性,并且這樣更簡(jiǎn)單、方便。
在其中一個(gè)實(shí)施例中,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4包括:當(dāng)執(zhí)行完畢事務(wù)操作,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4。
在該實(shí)施例中,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4,為應(yīng)用設(shè)備2在事務(wù)操作完成后進(jìn)行的獨(dú)立動(dòng)作。具體可通過(guò)如下方式實(shí)現(xiàn):應(yīng)用設(shè)備2檢查到事務(wù)操作完成,便將該事務(wù)對(duì)應(yīng)消息的標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中;事務(wù)操作完成后,向應(yīng)用設(shè)備2發(fā)送事務(wù)操作完成的提醒,應(yīng)用設(shè)備2根據(jù)該提醒,將該事務(wù)對(duì)應(yīng)消息的標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中。以實(shí)現(xiàn)通過(guò)檢查消息的標(biāo)識(shí)信息是否存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4,判斷該消息對(duì)應(yīng)的事務(wù)操作是否完成。本方案不需要調(diào)用應(yīng)用設(shè)備2的事務(wù)操作檢查接口進(jìn)行一一查詢,便可實(shí)現(xiàn)事務(wù)操作與消息發(fā)送的一致性。
如圖2所示,對(duì)應(yīng)地,本申請(qǐng)?zhí)峁┮环N用于消息處理的消息設(shè)備3,該設(shè)備包括:
第二裝置31,用于接收對(duì)應(yīng)的應(yīng)用設(shè)備2發(fā)送的消息及消息的標(biāo)識(shí)信息。
第四裝置32,用于根據(jù)消息更新對(duì)應(yīng)的待處理消息集合。
第六裝置33,用于根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4進(jìn)行查詢。
第八裝置34,用于根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息。
在該實(shí)施例中,第二裝置31接收對(duì)應(yīng)應(yīng)用設(shè)備2發(fā)送的消息及消息的標(biāo)識(shí)信息時(shí),若消息的標(biāo)識(shí)信息未設(shè)置在消息實(shí)體中,消息設(shè)備3應(yīng)將消息與消息的標(biāo)識(shí)信息進(jìn)行捆綁,使其一一對(duì)應(yīng),并與消息設(shè)備3中的其它消息相區(qū)別;若消息的標(biāo)識(shí)信息設(shè)置在消息實(shí)體中,消息設(shè)備3接收后,使其與其它消息相區(qū)別。例如,消息設(shè)備3可通過(guò)將接收到的消息進(jìn)行事務(wù)區(qū)分標(biāo)記及事務(wù)內(nèi)消息區(qū)分標(biāo)記兩層標(biāo)記,以實(shí)現(xiàn)消息設(shè)備3內(nèi)部消息的相互區(qū)分。第四裝置32根據(jù)消息更新對(duì)應(yīng)的待處理消息集合時(shí),需要根據(jù)自己的管理機(jī)制,將上述接收到的消息放入待處理消息集合,此處的消息集合也可理解為消息隊(duì)列。第六裝置33根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息,在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4進(jìn)行查詢時(shí),首先需要判斷待處理消息中需要查詢的消息的標(biāo)識(shí)信息,其次查詢標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中是否存在該需要查詢的消息的標(biāo)識(shí)信息。具體地,需要查詢的消息,可通過(guò)消息設(shè)備3根據(jù)不同事務(wù)的具體情況預(yù)設(shè)相應(yīng)的條件進(jìn)行判斷決定,或者借助消息設(shè)備3的管理機(jī)制判斷決定。第八裝置34根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息時(shí),具體地,是根據(jù)在標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中是否查詢到需要查詢的消息的標(biāo)識(shí)信息,進(jìn)一步對(duì)該消息進(jìn)行提交和刪除處理。
在其中一個(gè)實(shí)施例中,第四裝置32用于將消息設(shè)置為待處理狀態(tài),并將消息添加至對(duì)應(yīng)的待處理消息集合。
在該實(shí)施例中,消息設(shè)備的第四裝置32將第二裝置31接收到的消息設(shè)置為待處理狀態(tài)的具體實(shí)現(xiàn)方式不做限制,可通過(guò)具體標(biāo)記符實(shí)現(xiàn),也可通過(guò)放置在不同的隊(duì)列集合中實(shí)現(xiàn)。例如,消息設(shè)備3接收到消息后,將其標(biāo)記為處于half狀態(tài),也即處于待處理(提交)狀態(tài),在消息設(shè)備3未接收到該消息的處理指令前,該消息一直處于half狀態(tài)?;蛘?,通過(guò)將消息進(jìn)行分類、分區(qū)域放置等實(shí)現(xiàn),第四裝置32直接將第二裝置31接收到的消息放置在待處理消息隊(duì)列集合,默認(rèn)接收到的消息均為待處理消息。將消息添加至對(duì)應(yīng)的待處理消息集合中,以等待后續(xù)處理。
如圖2所示,在其中一個(gè)實(shí)施例中,消息設(shè)備3還包括:
第十裝置35,用于接收應(yīng)用設(shè)備2發(fā)送的消息處理指令。
第十二裝置36,用于根據(jù)消息處理指令對(duì)對(duì)應(yīng)消息進(jìn)行處理。
第十四裝置37,用于根據(jù)處理后的對(duì)應(yīng)消息更新待處理消息集合。
在該實(shí)施例中,事務(wù)操作完畢后,消息設(shè)備的第十裝置35接收應(yīng)用設(shè)備第七裝置24發(fā)送的消息處理指令,該指令需要攜帶對(duì)應(yīng)至消息設(shè)備3中待處理消息的相關(guān)信息,具體地,可通過(guò)該指令攜帶的對(duì)應(yīng)待處理消息的標(biāo)識(shí)信息實(shí)現(xiàn)。因該標(biāo)識(shí)信息不僅與事務(wù)操作中的消息唯一對(duì)應(yīng),還攜帶消息設(shè)備3可識(shí)別的事務(wù)識(shí)別信息,即消息設(shè)備3接收到事務(wù)操作結(jié)果的指令時(shí),能夠根據(jù)指令中的標(biāo)識(shí)信息,對(duì)應(yīng)至消息設(shè)備3中某個(gè)事務(wù)的某條待處理消息。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)能夠認(rèn)識(shí)到,將消息處理指令對(duì)應(yīng)至消息設(shè)備3待處理消息的實(shí)現(xiàn)方式是不限制的,應(yīng)用設(shè)備2與消息設(shè)備3之間的滿足要求的信息交互機(jī)制均可。第十裝置35接收到消息處理指令后,第十二裝置36便根據(jù)該指令攜帶的對(duì)應(yīng)至消息設(shè)備3中待處理消息的相關(guān)信息,對(duì)該待處理消息進(jìn)行處理。若指令內(nèi)容為消息提交,則第十二裝置36對(duì)對(duì)應(yīng)的消息進(jìn)行提交;若指令內(nèi)容為消息刪除(回滾),則第十二裝置36對(duì)對(duì)應(yīng)的消息進(jìn)行刪除。此時(shí)消息中的標(biāo)識(shí)信息隨著消息的提交/刪除而被清除。第十四裝置37將處理過(guò)的消息所存在的消息集合進(jìn)行更新,消息處理后,其存儲(chǔ)資源釋放,消息集合進(jìn)行更新。
在其中一個(gè)實(shí)施例中,第六裝置33用于當(dāng)待處理消息集合中待處理消息的存續(xù)時(shí)長(zhǎng)超過(guò)預(yù)定的處理時(shí)長(zhǎng)閾值,根據(jù)待處理信息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4進(jìn)行查詢。
在該實(shí)施例中,消息設(shè)備3的管理機(jī)制,可根據(jù)不同事務(wù)的屬性特點(diǎn),對(duì)該事務(wù)操作對(duì)應(yīng)的消息,預(yù)設(shè)處于待處理狀態(tài)的時(shí)間閾值。第六裝置33在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4查詢的前提條件為:第一,存在滿足條件的待處理消息;第二,獲取該待處理消息的標(biāo)識(shí)信息。所謂滿足條件的待處理消息,根據(jù)其以待處理狀態(tài)存在于消息集合中的時(shí)長(zhǎng)確定,超過(guò)預(yù)設(shè)時(shí)間閾值的,便被列為待查詢對(duì)象。如果消息的標(biāo)識(shí)信息與消息實(shí)體綁定在一起,直接讀取其標(biāo)識(shí)信息便可;否則,需要根據(jù)消息調(diào)取其標(biāo)識(shí)信息。具體的查詢順序 不在限制,可以查詢時(shí)待處理消息處于待處理狀態(tài)的時(shí)長(zhǎng)進(jìn)行,例如,處于待處理消息的狀態(tài)時(shí)間最長(zhǎng)的,最先對(duì)其進(jìn)行查詢;也可根據(jù)滿足待查詢條件的待處理消息在消息集合中的位置進(jìn)行處理,例如,根據(jù)消息集合中從上至下/從左至右等的順序進(jìn)行處理等。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)能夠認(rèn)識(shí)到,設(shè)置上述處理順序的具體方式并不做限制,實(shí)現(xiàn)滿足待查詢條件的消息被有序的處理即可。
另外,消息設(shè)備3也可將待處理消息進(jìn)行分類放置,例如,當(dāng)消息設(shè)備3接收到消息時(shí)放入第一待處理消息集合中,當(dāng)?shù)谝淮幚硐⒓现械南M足上述閾值條件時(shí),便自動(dòng)轉(zhuǎn)存至第二待處理消息集合中,此時(shí),第六裝置33只需根據(jù)第二待處理消息集合中消息的標(biāo)識(shí)信息,在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4進(jìn)行查詢。
在其中一個(gè)實(shí)施例中,消息設(shè)備3還包括:第十六裝置38,用于根據(jù)待處理消息在待處理消息集合中的存續(xù)時(shí)長(zhǎng)信息確定處理時(shí)長(zhǎng)閾值。
在該實(shí)施例中,消息設(shè)備的第十六裝置38,根據(jù)待處理消息在待處理消息集合中的存續(xù)時(shí)長(zhǎng)信息確定處理時(shí)長(zhǎng)閾值時(shí),具體可根據(jù)不同事務(wù)的屬性特點(diǎn),對(duì)該事務(wù)操作對(duì)應(yīng)的消息,預(yù)設(shè)處于待處理狀態(tài)的時(shí)間閾值。例如,針對(duì)操作時(shí)間比較長(zhǎng)的事務(wù),可設(shè)置較大的時(shí)間閾值;針對(duì)操作時(shí)間比較短的事務(wù),可設(shè)置較小的時(shí)間閾值。閾值的大小根據(jù)具體情況確定。不宜太大,以避免查詢啟動(dòng)過(guò)于滯后于事務(wù)操作;也不宜太小,以避免查詢啟動(dòng)過(guò)早事務(wù)操作還未結(jié)束;前述兩種情況都容易產(chǎn)生事務(wù)操作與消息發(fā)送的最終不一致性。
在其中一個(gè)實(shí)施例中,第八裝置34根據(jù)第六裝置33的查詢結(jié)果,對(duì)對(duì)應(yīng)消息進(jìn)行如下處理:若對(duì)應(yīng)的查詢結(jié)果非空,提交待處理消息;若查詢結(jié)果為空,刪除待處理消息。根據(jù)相應(yīng)的處理結(jié)果更新待處理消息集合。
在該實(shí)施例中,因只有當(dāng)事務(wù)操作完成時(shí)標(biāo)識(shí)信息才存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中,故當(dāng)?shù)诎搜b置34在標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中查詢到與待處理消息的標(biāo)識(shí)信息同樣的標(biāo)識(shí)信息時(shí),表明該事務(wù)操作已經(jīng)完成,而此時(shí)該事務(wù)對(duì)應(yīng)的消息在消息設(shè)備3中還處于待處理狀態(tài),事務(wù)操作與消息發(fā)送產(chǎn)生了不一致,此時(shí)第八裝置34提交該事務(wù)操作對(duì)應(yīng)的消息,實(shí)現(xiàn)了事務(wù)操作與消息發(fā)送的 最終一致性。同樣地,因只有當(dāng)事務(wù)操作完成時(shí)標(biāo)識(shí)信息才存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中,故當(dāng)?shù)诎搜b置34在標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中未查詢到與待處理消息的標(biāo)識(shí)信息同樣的標(biāo)識(shí)信息時(shí),表明該事務(wù)操作失敗,而此時(shí)該事務(wù)對(duì)應(yīng)的消息在消息設(shè)備3中還處于待處理狀態(tài),事務(wù)操作與消息發(fā)送產(chǎn)生了不一致,此時(shí)第八裝置34刪除(回滾)該事務(wù)操作對(duì)應(yīng)的消息,實(shí)現(xiàn)了事務(wù)操作與消息發(fā)送的最終一致性。
另外,在該實(shí)施例中,消息處理后,其存儲(chǔ)資源釋放,第八裝置34對(duì)消息集合進(jìn)行更新。具體更新方式,可以為左右/上下的待處理消息進(jìn)行順序填補(bǔ),也可以為將接收到的新的消息進(jìn)行填補(bǔ)等。
如圖3所示,本申請(qǐng)還提供一種消息處理系統(tǒng)1,該系統(tǒng)包括應(yīng)用設(shè)備2、消息設(shè)備3及標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4。其中,標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4可設(shè)置在應(yīng)用設(shè)備2或者消息設(shè)備3中,也可獨(dú)立設(shè)置。
在該實(shí)施例中,本申請(qǐng)的消息處理系統(tǒng)1,通過(guò)應(yīng)用設(shè)備2將事務(wù)操作時(shí)生成的消息及該消息的標(biāo)識(shí)信息發(fā)送至消息設(shè)備3,同時(shí)應(yīng)用設(shè)備2事務(wù)操作完成時(shí),標(biāo)識(shí)信息便存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中。消息設(shè)備3接收應(yīng)用設(shè)備2發(fā)送的消息及該消息的標(biāo)識(shí)信息,放置在待處理消息集合中,根據(jù)待處理消息的標(biāo)識(shí)信息,查詢對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4是否存在該標(biāo)識(shí)信息,根據(jù)查詢結(jié)果對(duì)待處理消息進(jìn)行處理。
與現(xiàn)有技術(shù)相比,本申請(qǐng)的消息處理系統(tǒng)1,通過(guò)在事務(wù)操作時(shí),為消息設(shè)置標(biāo)識(shí)信息,并將消息及其標(biāo)識(shí)消息從應(yīng)用設(shè)備2傳輸至消息設(shè)備3。同時(shí)執(zhí)行事務(wù)操作,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4,其中,僅當(dāng)事務(wù)操作被執(zhí)行完畢時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4。從而可得出,只有執(zhí)行成功的事務(wù),其對(duì)應(yīng)的數(shù)據(jù)庫(kù)中才存在消息的標(biāo)識(shí)信息,在消息設(shè)備3回查遺漏處理的消息的處理情況時(shí),只需要查詢應(yīng)用設(shè)備2的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)4中是否存在對(duì)應(yīng)的標(biāo)識(shí)信息,即可確保消息發(fā)送與事務(wù)處理的一致性。本申請(qǐng)的消息處理系統(tǒng)1包括前述應(yīng)用設(shè)備2及消息設(shè)備3,通過(guò)增加一個(gè)消息的標(biāo)識(shí)信息的概念,將消息及事務(wù)統(tǒng)一起來(lái),很完美地解決了消息發(fā)送最終一致性的問(wèn)題。同時(shí)本申請(qǐng)將標(biāo)識(shí)信息存儲(chǔ)至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作,定義為與對(duì)應(yīng)的事務(wù)操作屬于同一個(gè)原子操作,從而通過(guò)事務(wù)操作的一 致性,確保了事務(wù)操作與消息發(fā)送的最終一致性,更加完美地解決了事務(wù)操作與消息發(fā)送的一致性問(wèn)題。
如圖4所示,本申請(qǐng)還提供一種應(yīng)用設(shè)備的消息處理方法,該方法包括如下步驟:
S21,根據(jù)事務(wù)操作,生成對(duì)應(yīng)的消息及消息的標(biāo)識(shí)信息。
S22,向?qū)?yīng)的消息設(shè)備發(fā)送消息及標(biāo)識(shí)信息。
S23,執(zhí)行事務(wù)操作,并將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)事務(wù)操作被執(zhí)行完畢時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
在該實(shí)施例中,生成與事務(wù)操作對(duì)應(yīng)的消息及消息的標(biāo)識(shí)信息,此處消息的標(biāo)識(shí)信息與消息唯一對(duì)應(yīng)。消息及消息標(biāo)識(shí)的生成時(shí)間可以為事務(wù)開(kāi)始時(shí),也可以為事務(wù)請(qǐng)求時(shí),或者其它合適的時(shí)間,具體時(shí)間不做限制。消息及消息的標(biāo)識(shí)信息的生成順序也不做限定。向?qū)?yīng)的消息設(shè)備發(fā)送消息及標(biāo)識(shí)信息時(shí),可將消息的標(biāo)識(shí)信息設(shè)置到消息的消息實(shí)體內(nèi),與消息一起發(fā)送至消息設(shè)備,如此確保消息與其標(biāo)識(shí)信息的唯一對(duì)應(yīng)。將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作,可以與事務(wù)操作屬于同一個(gè)原子操作,也可以是在確保事務(wù)操作完成的情況下的獨(dú)立操作。只要保證在事務(wù)操作成功時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)即可。另外,標(biāo)識(shí)信息數(shù)據(jù)庫(kù)用于存儲(chǔ)標(biāo)識(shí)信息,其可以設(shè)置在應(yīng)用設(shè)備2內(nèi),也可以設(shè)置在應(yīng)用設(shè)備2外。該標(biāo)識(shí)信息數(shù)據(jù)庫(kù)也可以通過(guò)應(yīng)用設(shè)備2建立的用于存儲(chǔ)標(biāo)識(shí)信息的表實(shí)現(xiàn)。
在其中一個(gè)實(shí)施例中,消息處于待處理狀態(tài)。
在該實(shí)施例中,事務(wù)操作未結(jié)束前,應(yīng)用設(shè)備2針對(duì)該事務(wù)操作生成的消息應(yīng)處于待處理狀態(tài)。此狀態(tài)可通過(guò)應(yīng)用設(shè)備2的動(dòng)作實(shí)現(xiàn),也可通過(guò)消息設(shè)備的動(dòng)作來(lái)實(shí)現(xiàn)。應(yīng)用設(shè)備實(shí)現(xiàn)的方式一般包括:在將消息發(fā)送給消息設(shè)備前,添加消息設(shè)備可識(shí)別的消息處于待處理狀態(tài)的標(biāo)記,并將攜帶此標(biāo)記的消息發(fā)送至消息設(shè)備;在將消息發(fā)送給消息設(shè)備后,向消息設(shè)備發(fā)送消息處于待處理狀態(tài)的指令,消息設(shè)備通過(guò)該指令將此消息設(shè)置為待處理狀態(tài)。在第二種實(shí)現(xiàn)方式中,應(yīng)用設(shè)備2可將消息、消息的標(biāo)識(shí)信息以及消息處于帶出來(lái)狀態(tài)的指令同時(shí)發(fā)送至消息設(shè)備,當(dāng)然也可分開(kāi)發(fā)送,但是確保發(fā)送的時(shí)效性,例如,需要確保在事務(wù)操作未結(jié)束前,將該事務(wù)操作對(duì)應(yīng)的消息 應(yīng)處于待處理狀態(tài)的指令發(fā)送至消息設(shè)備中。
在其中一個(gè)實(shí)施例中,應(yīng)用設(shè)備的消息處理方法還包括:當(dāng)執(zhí)行完畢事務(wù)操作,向消息設(shè)備發(fā)送關(guān)于消息的消息處理指令。
在該實(shí)施例中,當(dāng)事務(wù)操作完畢,應(yīng)用設(shè)備2根據(jù)該事務(wù)的操作結(jié)果,向消息設(shè)備發(fā)送關(guān)于該事務(wù)操作對(duì)應(yīng)的消息處理指令。若事務(wù)操作成功,向消息設(shè)備發(fā)送消息提交指令;若事務(wù)操作失敗,則向消息設(shè)備發(fā)送消息刪除(回滾)指令。由于消息設(shè)備可能會(huì)同時(shí)處理多個(gè)事務(wù)操作的消息,為確保應(yīng)用設(shè)備2將事務(wù)操作結(jié)果所對(duì)應(yīng)的消息處理指令發(fā)送至消息設(shè)備時(shí),能夠準(zhǔn)確的對(duì)應(yīng)到該事務(wù)操作的消息,此時(shí),消息處理指令可攜帶該消息的標(biāo)識(shí)信息,該標(biāo)識(shí)信息不僅與事務(wù)操作中的消息唯一對(duì)應(yīng),還需要攜帶消息設(shè)備可識(shí)別的事務(wù)識(shí)別信息,即消息設(shè)備接收到事務(wù)操作結(jié)果的指令時(shí),能夠根據(jù)指令中的標(biāo)識(shí)信息,對(duì)應(yīng)至消息設(shè)備中某個(gè)事務(wù)的某條消息,進(jìn)一步根據(jù)指令內(nèi)容對(duì)該消息進(jìn)行處理。另外,本申請(qǐng)中應(yīng)用設(shè)備2發(fā)送的消息指令,如何準(zhǔn)確地對(duì)應(yīng)至消息設(shè)備中的消息的實(shí)現(xiàn)方法不做具體限制,消息設(shè)備可具有與應(yīng)用設(shè)備2配合實(shí)現(xiàn)的消息管理機(jī)制,只要能夠?qū)崿F(xiàn)上述對(duì)應(yīng)即可。
在其中一個(gè)實(shí)施例中,將標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作與事務(wù)操作屬于同一個(gè)原子操作。
在該實(shí)施例中,原子操作具有不可分割性,在執(zhí)行完畢之前不會(huì)被任何其它事務(wù)或任務(wù)中斷,并且,同一個(gè)原子操作中的所有操作全部成功時(shí),該原子操作才成功;其中的操作只要有一個(gè)失敗,該原子操作也失敗。將標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作與事務(wù)操作屬于同一個(gè)原子操作,如此,便實(shí)現(xiàn)了事務(wù)操作成功與標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的一致性。進(jìn)一步,可通過(guò)檢查消息的標(biāo)識(shí)信息是否存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù),判斷該消息對(duì)應(yīng)的事務(wù)操作是否完成,不需要調(diào)用應(yīng)用設(shè)備2的事務(wù)操作檢查接口進(jìn)行一一查詢,便可實(shí)現(xiàn)事務(wù)操作與消息發(fā)送的一致性,并且這樣更簡(jiǎn)單、方便。
在其中一個(gè)實(shí)施例中,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)包括:當(dāng)執(zhí)行完畢事務(wù)操作,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
在該實(shí)施例中,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),為應(yīng)用設(shè)備2在事務(wù)操作完成后進(jìn)行的獨(dú)立動(dòng)作。具體可通過(guò)如下方式實(shí)現(xiàn):應(yīng)用設(shè)備2 檢查到事務(wù)操作完成,便將該事務(wù)對(duì)應(yīng)消息的標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中;事務(wù)操作完成后,向應(yīng)用設(shè)備2發(fā)送事務(wù)操作完成的提醒,應(yīng)用設(shè)備2根據(jù)該提醒,將該事務(wù)對(duì)應(yīng)消息的標(biāo)識(shí)信息保存至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中。以實(shí)現(xiàn)通過(guò)檢查消息的標(biāo)識(shí)信息是否存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù),判斷該消息對(duì)應(yīng)的事務(wù)操作是否完成。本方案不需要調(diào)用應(yīng)用設(shè)備2的事務(wù)操作檢查接口進(jìn)行一一查詢,便可實(shí)現(xiàn)事務(wù)操作與消息發(fā)送的一致性。
如圖5所示,對(duì)應(yīng)地,本申請(qǐng)還提供一種消息設(shè)備的消息處理方法,其中,該方法包括:
S31,接收對(duì)應(yīng)的應(yīng)用設(shè)備2發(fā)送的消息及消息的標(biāo)識(shí)信息。
S32,根據(jù)消息更新對(duì)應(yīng)的待處理消息集合。
S33,根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
S34,根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息。
在該實(shí)施例中,消息設(shè)備接收對(duì)應(yīng)應(yīng)用設(shè)備2發(fā)送的消息及消息的標(biāo)識(shí)信息時(shí),若消息的標(biāo)識(shí)信息未設(shè)置在消息實(shí)體中,消息設(shè)備應(yīng)將消息與消息的標(biāo)識(shí)信息進(jìn)行捆綁,使其一一對(duì)應(yīng),并與消息設(shè)備中的其它消息相區(qū)別;若消息的標(biāo)識(shí)信息設(shè)置在消息實(shí)體中,消息設(shè)備接收后,使其與其它消息相區(qū)別。例如,消息設(shè)備可通過(guò)將接收到的消息進(jìn)行事務(wù)區(qū)分標(biāo)記及事務(wù)內(nèi)消息區(qū)分標(biāo)記兩層標(biāo)記,以實(shí)現(xiàn)消息設(shè)備內(nèi)部消息的相互區(qū)分。第四裝置32根據(jù)消息更新對(duì)應(yīng)的待處理消息集合時(shí),需要根據(jù)自己的管理機(jī)制,將上述接收到的消息放入待處理消息集合,此處的消息集合也可理解為消息隊(duì)列。消息設(shè)備根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息,在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢時(shí),首先需要判斷待處理消息中需要查詢的消息的標(biāo)識(shí)信息,其次查詢標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中是否存在該需要查詢的消息的標(biāo)識(shí)信息。具體地,需要查詢的消息,可通過(guò)消息設(shè)備根據(jù)不同事務(wù)的具體情況預(yù)設(shè)相應(yīng)的條件進(jìn)行判斷決定,或者借助消息設(shè)備的管理機(jī)制判斷決定。第八裝置34根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息時(shí),具體地,是根據(jù)在標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中是否查詢到需要查詢的消息的標(biāo)識(shí)信息,進(jìn)一步對(duì)該消息進(jìn)行提交和刪除處理。
在其中一個(gè)實(shí)施例中,根據(jù)消息更新對(duì)應(yīng)的待處理消息集合包括:將消 息設(shè)置為待處理狀態(tài),并將消息添加至對(duì)應(yīng)的待處理消息集合。
在該實(shí)施例中,消息設(shè)備將接收到的消息設(shè)置為待處理狀態(tài)的具體實(shí)現(xiàn)方式不做限制,可通過(guò)具體標(biāo)記符實(shí)現(xiàn),也可通過(guò)放置在不同的隊(duì)列集合中實(shí)現(xiàn)。例如,消息設(shè)備接收到消息后,將其標(biāo)記為處于half狀態(tài),也即處于待處理(提交)狀態(tài),在消息設(shè)備未接收到該消息的處理指令前,該消息一直處于half狀態(tài)?;蛘?,通過(guò)將消息進(jìn)行分類、分區(qū)域放置等實(shí)現(xiàn),消息設(shè)備將接收到的消息放置在待處理消息隊(duì)列集合,默認(rèn)接收到的消息均為待處理消息。將消息添加至對(duì)應(yīng)的待處理消息集合中,以等待后續(xù)處理。
如圖6所示,在其中一個(gè)實(shí)施例中,消息設(shè)備的消息處理方法還包括:
S35,接收應(yīng)用設(shè)備2發(fā)送的消息處理指令。
S36,根據(jù)消息處理指令對(duì)對(duì)應(yīng)消息進(jìn)行處理。
S37,根據(jù)處理后的對(duì)應(yīng)消息更新待處理消息集合。
在該實(shí)施例中,事務(wù)操作完畢后,消息設(shè)備接收應(yīng)用設(shè)備2發(fā)送的消息處理指令,該指令需要攜帶對(duì)應(yīng)至消息設(shè)備中待處理消息的相關(guān)信息,具體地,可通過(guò)該指令攜帶的對(duì)應(yīng)待處理消息的標(biāo)識(shí)信息實(shí)現(xiàn)。因該標(biāo)識(shí)信息不僅與事務(wù)操作中的消息唯一對(duì)應(yīng),還攜帶消息設(shè)備可識(shí)別的事務(wù)識(shí)別信息,即消息設(shè)備接收到事務(wù)操作結(jié)果的指令時(shí),能夠根據(jù)指令中的標(biāo)識(shí)信息,對(duì)應(yīng)至消息設(shè)備中某個(gè)事務(wù)的某條待處理消息。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)能夠認(rèn)識(shí)到,將消息處理指令對(duì)應(yīng)至消息設(shè)備待處理消息的實(shí)現(xiàn)方式是不限制的,應(yīng)用設(shè)備2與消息設(shè)備之間的滿足要求的信息交互機(jī)制均可。消息設(shè)備接收到消息處理指令后,便根據(jù)該指令攜帶的對(duì)應(yīng)至消息設(shè)備中待處理消息的相關(guān)信息,對(duì)該待處理消息進(jìn)行處理。若指令內(nèi)容為消息提交,則對(duì)對(duì)應(yīng)的消息進(jìn)行提交;若指令內(nèi)容為消息刪除(回滾),則對(duì)對(duì)應(yīng)的消息進(jìn)行刪除。此時(shí)消息中的標(biāo)識(shí)信息隨著消息的提交/刪除而被清除。將處理過(guò)的消息所存在的消息集合進(jìn)行更新,消息處理后,其存儲(chǔ)資源釋放,消息集合進(jìn)行更新。
在其中一個(gè)實(shí)施例中,根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢包括:
當(dāng)待處理消息集合中待處理消息的存續(xù)時(shí)長(zhǎng)超過(guò)預(yù)定的處理時(shí)長(zhǎng)閾值,根據(jù)待處理信息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
在該實(shí)施例中,消息設(shè)備的管理機(jī)制,可根據(jù)不同事務(wù)的屬性特點(diǎn),對(duì)該事務(wù)操作對(duì)應(yīng)的消息,預(yù)設(shè)處于待處理狀態(tài)的時(shí)間閾值。在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)查詢的前提條件為:第一,存在滿足條件的待處理消息;第二,獲取該待處理消息的標(biāo)識(shí)信息。所謂滿足條件的待處理消息,根據(jù)其以待處理狀態(tài)存在于消息集合中的時(shí)長(zhǎng)確定,超過(guò)預(yù)設(shè)時(shí)間閾值的,便被列為待查詢對(duì)象。如果消息的標(biāo)識(shí)信息與消息實(shí)體綁定在一起,直接讀取其標(biāo)識(shí)信息便可;否則,需要根據(jù)消息調(diào)取其標(biāo)識(shí)信息。具體的查詢順序不在限制,可以查詢時(shí)待處理消息處于待處理狀態(tài)的時(shí)長(zhǎng)進(jìn)行,例如,處于待處理消息的狀態(tài)時(shí)間最長(zhǎng)的,最先對(duì)其進(jìn)行查詢;也可根據(jù)滿足待查詢條件的待處理消息在消息集合中的位置進(jìn)行處理,例如,根據(jù)消息集合中從上至下/從左至右等的順序進(jìn)行處理等。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)能夠認(rèn)識(shí)到,設(shè)置上述處理順序的具體方式并不做限制,實(shí)現(xiàn)滿足待查詢條件的消息被有序的處理即可。
另外,消息設(shè)備也可將待處理消息進(jìn)行分類放置,例如,當(dāng)消息設(shè)備接收到消息時(shí)放入第一待處理消息集合中,當(dāng)?shù)谝淮幚硐⒓现械南M足上述閾值條件時(shí),便自動(dòng)轉(zhuǎn)存至第二待處理消息集合中,此時(shí),第六裝置33只需根據(jù)第二待處理消息集合中消息的標(biāo)識(shí)信息,在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
在其中一個(gè)實(shí)施例中,消息設(shè)備的消息處理方法還包括:
根據(jù)待處理消息在待處理消息集合中的存續(xù)時(shí)長(zhǎng)信息確定處理時(shí)長(zhǎng)閾值。
在該實(shí)施例中,消息設(shè)備的根據(jù)待處理消息在待處理消息集合中的存續(xù)時(shí)長(zhǎng)信息,確定處理時(shí)長(zhǎng)閾值時(shí),具體可根據(jù)不同事務(wù)的屬性特點(diǎn),對(duì)該事務(wù)操作對(duì)應(yīng)的消息,預(yù)設(shè)處于待處理狀態(tài)的時(shí)間閾值。例如,針對(duì)操作時(shí)間比較長(zhǎng)的事務(wù),可設(shè)置較大的時(shí)間閾值;針對(duì)操作時(shí)間比較短的事務(wù),可設(shè)置較小的時(shí)間閾值。閾值的大小根據(jù)具體情況確定。不宜太大,以避免查詢啟動(dòng)過(guò)于滯后于事務(wù)操作;也不宜太小,以避免查詢啟動(dòng)過(guò)早事務(wù)操作還未結(jié)束;前述兩種情況都容易產(chǎn)生事務(wù)操作與消息發(fā)送的最終不一致性。
在其中一個(gè)實(shí)施例中,根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息包括:若對(duì)應(yīng)的查詢結(jié)果非空,提交待處理消息;若查詢結(jié)果為空,刪除待處理消息。 根據(jù)相應(yīng)的處理結(jié)果更新待處理消息集合。
在該實(shí)施例中,因只有當(dāng)事務(wù)操作完成時(shí)標(biāo)識(shí)信息才存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中,故當(dāng)在標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中查詢到與待處理消息的標(biāo)識(shí)信息同樣的標(biāo)識(shí)信息時(shí),表明該事務(wù)操作已經(jīng)完成,而此時(shí)該事務(wù)對(duì)應(yīng)的消息在消息設(shè)備中還處于待處理狀態(tài),事務(wù)操作與消息發(fā)送產(chǎn)生了不一致,此時(shí)提交該事務(wù)操作對(duì)應(yīng)的消息,實(shí)現(xiàn)了事務(wù)操作與消息發(fā)送的最終一致性。同樣地,因只有當(dāng)事務(wù)操作完成時(shí)標(biāo)識(shí)信息才存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中,故當(dāng)在標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中未查詢到與待處理消息的標(biāo)識(shí)信息同樣的標(biāo)識(shí)信息時(shí),表明該事務(wù)操作失敗,而此時(shí)該事務(wù)對(duì)應(yīng)的消息在消息設(shè)備中還處于待處理狀態(tài),事務(wù)操作與消息發(fā)送產(chǎn)生了不一致,此時(shí)刪除(回滾)該事務(wù)操作對(duì)應(yīng)的消息,實(shí)現(xiàn)了事務(wù)操作與消息發(fā)送的最終一致性。
另外,在該實(shí)施例中,消息處理后,其存儲(chǔ)資源釋放,對(duì)消息集合進(jìn)行更新。具體更新方式,可以為左右/上下的待處理消息進(jìn)行順序填補(bǔ),也可以為將接收到的新的消息進(jìn)行填補(bǔ)等。
如圖7所示,為本申請(qǐng)的消息處理方法其中一實(shí)施例的流程圖。該消息處理方法包括如下步驟:
S21,應(yīng)用設(shè)備2根據(jù)事務(wù)操作,生成對(duì)應(yīng)的消息及消息的標(biāo)識(shí)信息。
S22,應(yīng)用設(shè)備2向?qū)?yīng)的消息設(shè)備發(fā)送消息及標(biāo)識(shí)信息。
S31,消息設(shè)備接收對(duì)應(yīng)的應(yīng)用設(shè)備2發(fā)送的消息及消息的標(biāo)識(shí)信息。
S32,消息設(shè)備根據(jù)消息更新對(duì)應(yīng)的待處理消息集合。
S23,應(yīng)用設(shè)備2執(zhí)行事務(wù)操作,并將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)事務(wù)操作被執(zhí)行完畢時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
S33,消息設(shè)備根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
S34,消息設(shè)備根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息。
該實(shí)施例中消息處理方法的具體步驟的詳細(xì)描述,請(qǐng)參照前述對(duì)應(yīng)標(biāo)號(hào)步驟的描述。在此不再贅述。
在該實(shí)施例中,當(dāng)事務(wù)完成后,消息設(shè)備完全依賴,根據(jù)其待處理消息集合中的消息的標(biāo)識(shí)信息對(duì)標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢的結(jié)果,判斷事務(wù)完成 狀態(tài),并進(jìn)一步對(duì)待處理消息進(jìn)行處理。消息設(shè)備在待處理消息滿足查詢條件時(shí),隨時(shí)可以對(duì)對(duì)應(yīng)標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢,以實(shí)現(xiàn)消息發(fā)送與事務(wù)操作的最終一致性。
另外,該實(shí)施例中的步驟并不要求按照上述書(shū)寫順序完成,其中有些步驟的順便是不限制的,甚至可以同步,例如步驟S32與步驟S23的先后順序不定,也可同步。
如圖8所示,為本申請(qǐng)的消息處理方法其中又一實(shí)施例的流程圖。該消息處理方法包括如下步驟:
S21,應(yīng)用設(shè)備根據(jù)事務(wù)操作,生成對(duì)應(yīng)的消息及消息的標(biāo)識(shí)信息。
S22,應(yīng)用設(shè)備向?qū)?yīng)的消息設(shè)備發(fā)送消息及標(biāo)識(shí)信息。
S31,消息設(shè)備接收對(duì)應(yīng)的應(yīng)用設(shè)備發(fā)送的消息及消息的標(biāo)識(shí)信息。
S32,消息設(shè)備根據(jù)消息更新對(duì)應(yīng)的待處理消息集合。
S23,應(yīng)用設(shè)備執(zhí)行事務(wù)操作,并將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)事務(wù)操作被執(zhí)行完畢時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。
S24,當(dāng)執(zhí)行完畢事務(wù)操作,向消息設(shè)備發(fā)送關(guān)于消息的消息處理指令。
S35,接收應(yīng)用設(shè)備發(fā)送的消息處理指令。
S36,根據(jù)消息處理指令對(duì)對(duì)應(yīng)消息進(jìn)行處理。
S37,根據(jù)處理后的對(duì)應(yīng)消息更新待處理消息集合。
S33,消息設(shè)備根據(jù)待處理消息集合中待處理消息的標(biāo)識(shí)信息在對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢。
S34,消息設(shè)備根據(jù)對(duì)應(yīng)的查詢結(jié)果處理待處理消息。
該實(shí)施例中消息處理方法的具體步驟的詳細(xì)描述,請(qǐng)參照前述對(duì)應(yīng)標(biāo)號(hào)步驟的描述。在此不再贅述。
在該實(shí)施例中,當(dāng)事務(wù)完成時(shí),應(yīng)用設(shè)備向消息設(shè)備發(fā)送該事務(wù)對(duì)應(yīng)的消息處理指令,消息設(shè)備接收該指令,并按照指令對(duì)對(duì)應(yīng)的消息進(jìn)行處理。消息處理后,便釋放消息存儲(chǔ)資源,更新待處理消息集合。消息設(shè)備檢查其待處理消息集合中是否有滿足查詢的待處理消息,根據(jù)所檢查到的待處理消息集合中的消息的標(biāo)識(shí)信息,對(duì)對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢,以判斷該消息對(duì)應(yīng)的事務(wù)操作是否完成,并進(jìn)一步對(duì)該待處理消息進(jìn)行處理。消息設(shè) 備在待處理消息滿足查詢條件時(shí),隨時(shí)可以對(duì)對(duì)應(yīng)標(biāo)識(shí)信息數(shù)據(jù)庫(kù)進(jìn)行查詢,以實(shí)現(xiàn)消息發(fā)送與事務(wù)操作的最終一致性。
另外,該實(shí)施例中的步驟并不要求按照上述書(shū)寫順序完成,其中有些步驟的順便是不限制的,甚至可以同步,例如步驟S32與步驟S23的先后順序不定,也可同步。
現(xiàn)有技術(shù)相比,本申請(qǐng)的消息處理方法,通過(guò)在事務(wù)操作時(shí),為消息設(shè)置標(biāo)識(shí)信息,并將消息及其標(biāo)識(shí)消息從應(yīng)用設(shè)備傳輸至消息設(shè)備。同時(shí)執(zhí)行事務(wù)操作,將標(biāo)識(shí)信息保存至對(duì)應(yīng)的標(biāo)識(shí)信息數(shù)據(jù)庫(kù),其中,僅當(dāng)事務(wù)操作被執(zhí)行完畢時(shí),標(biāo)識(shí)信息存在于標(biāo)識(shí)信息數(shù)據(jù)庫(kù)。從而可得出,只有執(zhí)行成功的事務(wù),其對(duì)應(yīng)的數(shù)據(jù)庫(kù)中才存在消息的標(biāo)識(shí)信息,在消息設(shè)備回查遺漏處理的消息的處理情況時(shí),只需要查詢應(yīng)用設(shè)備的標(biāo)識(shí)信息數(shù)據(jù)庫(kù)中是否存在對(duì)應(yīng)的標(biāo)識(shí)信息,即可確保消息發(fā)送與事務(wù)處理的一致性。同時(shí)本申請(qǐng)將標(biāo)識(shí)信息存儲(chǔ)至標(biāo)識(shí)信息數(shù)據(jù)庫(kù)的操作,定義為與對(duì)應(yīng)的事務(wù)操作屬于同一個(gè)原子操作,從而通過(guò)事務(wù)操作的一致性,確保了事務(wù)操作與消息發(fā)送的最終一致性,更加完美地解決了事務(wù)操作與消息發(fā)送的一致性問(wèn)題。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過(guò)軟件或者硬件來(lái)實(shí)現(xiàn)。第一,第二等詞語(yǔ)用來(lái)表示名稱,而并不表示任何特定的順序。