專利名稱:在連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及連接的消息傳遞(messaging)網(wǎng)絡(luò)的領(lǐng)域。具體地,本發(fā)明涉及在連接的消息傳遞網(wǎng)絡(luò)中提供交易消息傳遞支持。
背景技術(shù):
多種類型的消息引擎/客戶端的網(wǎng)絡(luò)經(jīng)常連接在一起。不同類型的消息傳遞網(wǎng)絡(luò)可具有不同特征。特征較豐富的第一網(wǎng)絡(luò)可連接至較不精密的第二網(wǎng)絡(luò)。這意味著連接至較不精密的網(wǎng)絡(luò)的應(yīng)用程序可能無法訪問或使用特征較豐富的網(wǎng)絡(luò)的一些功能。例如,使用IBM@WebSphere@Message Broker (消息代理)V6、MQTT (MQ TelemetryTransport (遙測(cè)傳輸))客戶端可連接到MQ網(wǎng)絡(luò)中(IBM和WebSphere是在全世界許多司法管轄區(qū)注冊(cè)的國際商業(yè)機(jī)器公司的商標(biāo))。MQTT是可用在諸如移動(dòng)電話的裝置中的簡(jiǎn)單且輕量級(jí)(lightweight)的協(xié)議,而MQ是需要更強(qiáng)大的計(jì)算機(jī)來運(yùn)行的特征豐富的協(xié)議。有時(shí),一個(gè)消息傳遞網(wǎng)絡(luò)上的客戶端意欲訪問其它消息傳遞網(wǎng)絡(luò)的特征。例如,移動(dòng)電話上的MQTT應(yīng)用程序可能希望能夠?qū)⒃谕近c(diǎn)下的消息放置(put)到MQ網(wǎng)絡(luò),以使得它們可以確保所有該消息的接收者接收到該消息或無接收者接收到該消息。
因此,在本領(lǐng)域中需要解決前述問題。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了一種用于在連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的方法,所述連接的消息傳遞網(wǎng)絡(luò)具有第一消息傳遞網(wǎng)絡(luò)及第二消息傳遞網(wǎng)絡(luò),該第一消息傳遞網(wǎng)絡(luò)不支持交易處理,而該第二消息傳遞網(wǎng)絡(luò)支持交易處理;該方法包括在第一與第二消息傳遞網(wǎng)絡(luò)之間提供代理服務(wù)器(proxy)應(yīng)用程序,其中該代理服務(wù)器應(yīng)用程序:接收來自該第一消息傳遞網(wǎng)絡(luò)上的第一應(yīng)用程序的消息,所述消息包括關(guān)于所述消息的交易處理的指令;以及使用該第二消息傳遞網(wǎng)絡(luò)所支持的交易處理來將所述消息轉(zhuǎn)發(fā)至該第二消息傳遞網(wǎng)絡(luò)。根據(jù)另一方面,本發(fā)明提供了一種存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并可加載到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中的計(jì)算機(jī)程序,包括軟件代碼部分,當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述軟件代碼部分用于執(zhí)行本發(fā)明的步驟。根據(jù)本發(fā)明的又一方面,提供一種用于在連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的系統(tǒng),包括:不支持交易處理的第一消息傳遞網(wǎng)絡(luò);支持交易處理的第二消息傳遞網(wǎng)絡(luò);在第一與第二消息傳遞網(wǎng)絡(luò)之間提供的代理服務(wù)器應(yīng)用程序,其中該代理服務(wù)器應(yīng)用程序包括:用于接收及讀取來自該第一消息傳遞網(wǎng)絡(luò)上的第一應(yīng)用程序的消息的信息讀取組件,所述消息包括關(guān)于所述消息的交易處理的指令;交易處理組件,用于使用該第二消息傳遞網(wǎng)絡(luò)所支持的交易處理來將所述消息轉(zhuǎn)發(fā)至該第二消息傳遞網(wǎng)絡(luò)。根據(jù)再一方面,本發(fā)明提供了用于在連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的計(jì)算機(jī)程序產(chǎn)品,所述連接的消息傳遞網(wǎng)絡(luò)具有第一消息傳遞網(wǎng)絡(luò)及第二消息傳遞網(wǎng)絡(luò),該第一消息傳遞網(wǎng)絡(luò)不支持交易處理,而該第二消息傳遞網(wǎng)絡(luò)支持交易處理,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可由處理電路讀取、并且存儲(chǔ)由所述處理電路執(zhí)行以用于執(zhí)行用以執(zhí)行本發(fā)明的步驟的方法的指令。
現(xiàn)在將參考如在下列圖中所圖示的優(yōu)選實(shí)施例,僅通過示例的方式描述本發(fā)明:圖1是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的系統(tǒng)的框圖;圖2是根據(jù)現(xiàn)有技術(shù)的、其中可實(shí)施本發(fā)明的優(yōu)選實(shí)施例的計(jì)算機(jī)的框圖;圖3是示出根據(jù)本發(fā)明的第一實(shí)施例的消息流的示意圖;圖4是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的方法的流程圖;以及圖5是根據(jù)本發(fā)明的第二實(shí)施例的消息流的流程圖。
具體實(shí)施例方式將可理解的是,為了說明的簡(jiǎn)化及清楚,在圖中示出的部件不需要依比例繪制。例如,為了清楚,這些部件中的一些部件的尺寸可相對(duì)于其它部件而放大。此外,在認(rèn)為適合的情況下,標(biāo)號(hào)在圖之間可重復(fù)以指示對(duì)應(yīng)或類似的特征。在下面的詳細(xì)描述中,提出多個(gè)具體細(xì)節(jié)以便提供對(duì)本發(fā)明的徹底理解。然而,本領(lǐng)域技術(shù)人員將理解,可在無需這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其它實(shí)例中,眾所周知的方法、過程及組件并未詳細(xì)描述,以便不會(huì)混淆本發(fā)明。描述了一種方法及系統(tǒng),在該方法及系統(tǒng)中,一個(gè)消息傳遞網(wǎng)絡(luò)上的代理服務(wù)器應(yīng)用程序代表連接至不支持交易的消息傳遞網(wǎng)絡(luò)的應(yīng)用程序而執(zhí)行交易消息傳遞。批量消息的開始和結(jié)束顯露于代理服務(wù)器交易中,以使該發(fā)送應(yīng)用程序具有控制權(quán)。這允許連接至不支持交易的消息傳遞網(wǎng)絡(luò)的應(yīng)用程序能控制哪些操作是哪個(gè)交易的部分。由代理服務(wù)器應(yīng)用程序在支持交易的消息傳遞網(wǎng)絡(luò)上代表發(fā)送應(yīng)用程序來執(zhí)行操作。一個(gè)消息傳遞網(wǎng)絡(luò)上的代理服務(wù)器應(yīng)用程序接收并作用于來自其它消息傳遞網(wǎng)絡(luò)上的應(yīng)用程序的請(qǐng)求,并且向原始發(fā)送者提供詳述所述請(qǐng)求的成功(或其它)的響應(yīng)。代理服務(wù)器應(yīng)用程序代表連接至不支持交易的網(wǎng)絡(luò)的應(yīng)用程序而執(zhí)行交易消息傳遞,所述代理服務(wù)器應(yīng)用程序給予發(fā)送應(yīng)用程序關(guān)于執(zhí)行哪些操作作為交易工作單元(unit-of-work)的控制權(quán)。此外,代理服務(wù)器應(yīng)用程序可如下執(zhí)行一個(gè)或多個(gè)其它功能: 代理服務(wù)器應(yīng)用程序可代表連接的僅點(diǎn)對(duì)點(diǎn)消息傳遞網(wǎng)絡(luò)上的應(yīng)用程序而執(zhí)行發(fā)布(publish)/訂閱操作; 代理服務(wù)器應(yīng)用程序可代表僅發(fā)布/訂閱消息傳遞網(wǎng)絡(luò)上的應(yīng)用程序而執(zhí)行點(diǎn)對(duì)點(diǎn)消息傳遞; 代理服務(wù)器應(yīng)用程序可響應(yīng)于從連接至更不可靠的消息傳遞網(wǎng)絡(luò)的應(yīng)用程序發(fā)送的一系列消息片段,匯編(assemble)單個(gè)大消息。這些片段應(yīng)該也能夠包括諸如MQ的消息特性的元數(shù)據(jù); 代理服務(wù)器應(yīng)用程序可代表連接至不支持多播的網(wǎng)絡(luò)的應(yīng)用程序而發(fā)送多播消息。參考圖1,框圖示出所描述的系統(tǒng)100的實(shí)施例。提供第一消息傳遞網(wǎng)絡(luò)110,其不支持交易處理。提供第二消息傳遞網(wǎng)絡(luò)120,其支持交易處理。所述兩個(gè)消息傳遞網(wǎng)絡(luò)110、120例如經(jīng)由消息傳遞代理而連接。第一消息傳遞網(wǎng)絡(luò)110上的第一應(yīng)用程序111產(chǎn)生要由第二消息傳遞網(wǎng)絡(luò)120上的應(yīng)用程序121-123經(jīng)由消息傳遞引擎125所消耗(consume)的消息。提供代理服務(wù)器應(yīng)用程序130,其代表第一應(yīng)用程序111而執(zhí)行交易消息傳遞,該代理服務(wù)器應(yīng)用程序130給予該第一應(yīng)用程序111關(guān)于執(zhí)行哪些操作作為交易工作單元的控制權(quán)。代理服務(wù)器應(yīng)用程序130可以是單機(jī)(stand-alone)應(yīng)用程序,或者可以構(gòu)建為消息傳遞網(wǎng)絡(luò)之一中的消息傳遞弓I擎或消息傳遞網(wǎng)絡(luò)之間的網(wǎng)關(guān)。第一應(yīng)用程序111包括信息添加組件112,用于向消息添加信息,以指示代理服務(wù)器應(yīng)用程序130如何處理交易及任何其它要由代理服務(wù)器應(yīng)用程序130添加的功能性。第一應(yīng)用程序111包括交易處理組件113,用于協(xié)調(diào)要向代理服務(wù)器應(yīng)用程序130指示的交易處理。第一應(yīng)用程序111還包括功能處理組件114,用于協(xié)調(diào)要向代理服務(wù)器應(yīng)用程序130指示的額外功能處理。第一應(yīng)用程序111還包括信息讀取組件115,用以解譯(interpret)來自代理服務(wù)器應(yīng)用程序130的返回消息。在一個(gè)實(shí)施例中,信息添加組件112向要由第一應(yīng)用程序111發(fā)送的消息140添加報(bào)頭141。報(bào)頭141可包括主題、目的地隊(duì)列、及該消息所屬于的工作單元的標(biāo)識(shí)符。在另一個(gè)實(shí)施例 中,信息添加組件112添加消息140的主題形式的信息。第一應(yīng)用程序111請(qǐng)求如向代理服務(wù)器應(yīng)用程序130指示的工作單元的確認(rèn)(commit)。第一應(yīng)用程序111還包括信息讀取組件115,用于從來自代理服務(wù)器應(yīng)用程序130的輸入消息讀取信息。代理服務(wù)器應(yīng)用程序130包括訂閱機(jī)制135,用于訂閱第一應(yīng)用程序111在其上發(fā)布具有額外交易處理信息的消息的主題。代理服務(wù)器應(yīng)用程序130包括信息讀取組件131,用于讀取來自第一應(yīng)用程序111的、與消息140相關(guān)的所添加的信息。在一個(gè)實(shí)施例中,其可以讀取從第一應(yīng)用程序111接收的消息140的報(bào)頭141。在另一個(gè)實(shí)施例中,其可以讀取消息140的主題以獲得指令。代理服務(wù)器應(yīng)用程序130包括交易處理組件132,用于向用于由第二消息傳遞網(wǎng)絡(luò)120的第二應(yīng)用程序121-123訪問的、轉(zhuǎn)發(fā)至第二消息傳遞網(wǎng)絡(luò)120的消息傳遞引擎125的消息150添加交易處理。代理服務(wù)器應(yīng)用程序130還可包括其它功能處理組件133,用于響應(yīng)于從第一應(yīng)用程序111接收的指令而向消息150添加其它功能性。例如,其它功能性可包括:在發(fā)布/訂閱消息與點(diǎn)對(duì)點(diǎn)消息之間轉(zhuǎn)換、并且反之亦然;將多個(gè)小消息編譯為一大消息;及將消息轉(zhuǎn)換為多播消息?;诖矸?wù)器應(yīng)用程序130對(duì)于第一應(yīng)用程序111所執(zhí)行的操作的成功/失敗,由代理服務(wù)器應(yīng)用程序130生成對(duì)第一應(yīng)用程序111的響應(yīng)。來自第二應(yīng)用程序121-123的響應(yīng)將在無需代理服務(wù)器應(yīng)用程序130的情況下從第二消息傳遞網(wǎng)絡(luò)120流動(dòng)至第一消息傳遞網(wǎng)絡(luò)110。當(dāng)交易被確認(rèn)時(shí),這些消息是正常消息,且因此可由第一應(yīng)用程序111處理。參考圖2,用于實(shí)施本發(fā)明的方面的示例性系統(tǒng)包括數(shù)據(jù)處理系統(tǒng)200,其適合用于存儲(chǔ)和/或執(zhí)行程序代碼,該數(shù)據(jù)處理系統(tǒng)200包括通過總線系統(tǒng)203直接地或間接地耦接至存儲(chǔ)器部件的至少一個(gè)處理器201。存儲(chǔ)器部件可包括在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲(chǔ)器、大容量存儲(chǔ)裝置、以及高速緩沖存儲(chǔ)器,高速緩沖存儲(chǔ)器提供至少一些程序代碼的暫時(shí)性存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)裝置檢索代碼的次數(shù)。存儲(chǔ)器部件可包括以只讀存儲(chǔ)器(R0M)204和隨機(jī)存取存儲(chǔ)器(RAM)205為形式的系統(tǒng)存儲(chǔ)器202?;据斎?輸出系統(tǒng)(BIOS) 206可存儲(chǔ)在R0M204中。系統(tǒng)軟件207可存儲(chǔ)在RAM205中,該系統(tǒng)軟件207包括操作系統(tǒng)軟件208。軟件應(yīng)用程序210還可存儲(chǔ)在RAM205 中。系統(tǒng)200還可包括主存儲(chǔ)構(gòu)件211 (諸如磁硬盤驅(qū)動(dòng)器)、及二級(jí)存儲(chǔ)構(gòu)件212 (諸如磁盤驅(qū)動(dòng)器及光盤驅(qū)動(dòng)器)。所述驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供用于系統(tǒng)200的計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊及其它數(shù)據(jù)的非易失性存儲(chǔ)。軟件應(yīng)用程序可存儲(chǔ)在主存儲(chǔ)構(gòu)件211、二級(jí)存儲(chǔ)構(gòu)件212及系統(tǒng)存儲(chǔ)器202上。計(jì)算系統(tǒng)200可使用經(jīng)由網(wǎng)絡(luò)適配器216的至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接,在聯(lián)網(wǎng)的環(huán)境中操作。輸入/輸出裝置213可直接耦接至系統(tǒng)、或通過插入I/O控制器而耦接至系統(tǒng)。使用者可通過諸如鍵盤、定點(diǎn)裝置或其它輸入裝置(例如,麥克風(fēng)、操縱桿、游戲柄、碟形衛(wèi)星天線、掃描儀等)的輸入裝置,將命令及信息輸入到系統(tǒng)200中。輸出裝置可包括揚(yáng)聲器、打印機(jī)等。顯示裝置214也經(jīng)由諸如視頻適配器215的接口連接至系統(tǒng)總線203。參考圖3,示意圖300示出經(jīng)由代理服務(wù)器應(yīng)用程序130在第一消息傳遞網(wǎng)絡(luò)110上的第一應(yīng)用程序111與第二消息傳遞網(wǎng)絡(luò)120上的消息傳遞引擎125之間的消息流的示例實(shí)施例,該第一消息傳遞網(wǎng)絡(luò)110為非交易處理網(wǎng)絡(luò),而該第二消息傳遞網(wǎng)絡(luò)120為交易處理網(wǎng)絡(luò)。消息傳遞引擎125包括指定(designation)隊(duì)列340,一個(gè)或多個(gè)應(yīng)用程序121-123可從該指定隊(duì)列340讀取消息。
在交易中,在該交易中完成的每件事成功,或者退出(back out)該交易且不發(fā)生作為該交易的部分的任何事。所描述的方法允許連接至不支持交易的第一消息傳遞網(wǎng)絡(luò)110的第一應(yīng)用程序111控制哪些操作是哪個(gè)交易的部分。由代理服務(wù)器應(yīng)用程序130代表第一應(yīng)用程序111在支持交易的第二消息傳遞網(wǎng)絡(luò)120上執(zhí)行操作。代理服務(wù)器應(yīng)用程序130在代理服務(wù)器交易中顯露批量消息的開始及結(jié)束,以使第一應(yīng)用程序111具有控制權(quán)。第一應(yīng)用程序111可發(fā)布包含特定報(bào)頭320的一個(gè)或多個(gè)消息310,該特定報(bào)頭320包括代理服務(wù)器應(yīng)用程序130訂閱(301)的主題。報(bào)頭320包括目的地隊(duì)列及工作單元(UOW)的標(biāo)識(shí)符,其中消息310是所述工作單元的部分。代理服務(wù)器應(yīng)用程序130接收(302)所發(fā)布的消息310并讀取報(bào)頭320。代理服務(wù)器應(yīng)用程序130根據(jù)來自報(bào)頭320的信息,用交易處理轉(zhuǎn)發(fā)(303)消息310。代理服務(wù)器應(yīng)用程序130使用第二消息傳遞網(wǎng)絡(luò)120用來支持交易的任何機(jī)制,來將消息310放置至第二消息傳遞網(wǎng)絡(luò)120。代理服務(wù)器應(yīng)用程序130在交易中將消息放置至第二消息傳遞網(wǎng)絡(luò)120上的目的地隊(duì)列340。可選地,代理服務(wù)器應(yīng)用程序130作為第一應(yīng)用程序111被認(rèn)證的使用者而執(zhí)行所述放置,如同其具有所需的授權(quán)(authority)。不同使用者可具有不同授權(quán)。如果第一應(yīng)用程序111提供用戶名(及可選地提供一些認(rèn)證信息),則代理服務(wù)器應(yīng)用程序130可作為該使用者而進(jìn)行交易。例如,當(dāng)作為使用者“Bob”而運(yùn)行的應(yīng)用程序發(fā)送請(qǐng)求至代理服務(wù)器應(yīng)用程序130,以發(fā)布到“/happy/chrismas”。元數(shù)據(jù)可包括密碼。當(dāng)代理服務(wù)器應(yīng)用程序130發(fā)布到第二消息傳遞網(wǎng)絡(luò)120時(shí),該代理服務(wù)器應(yīng)用程序130認(rèn)證作為“Bob” (及可選地提供給予其的密碼)。然后,成功或失敗將取決于Bob的訪問,而非另一使用者的訪問。第二應(yīng)用程序121發(fā)送響應(yīng)消息350,該響應(yīng)消息350將從第二消息傳遞網(wǎng)絡(luò)120流動(dòng)至第一消息傳遞網(wǎng)絡(luò)110,而無須經(jīng)由代理服務(wù)器應(yīng)用程序130進(jìn)行。第一應(yīng)用程序111發(fā)布后續(xù)確認(rèn)消息360,其要求交易被確認(rèn)或退出。代理服務(wù)器應(yīng)用程序130確定(304)代理服務(wù)器應(yīng)用程序130代表第一應(yīng)用程序111在交易中處理的消息的成功或失敗,并且生成(305)確認(rèn)響應(yīng)消息370并將其發(fā)送至第一應(yīng)用程序111??蛇x地,代理服務(wù)器應(yīng)用程序130可具有針對(duì)交易的確認(rèn)或退出的時(shí)間限制。參考圖4,流程圖400示出如由代理服務(wù)器應(yīng)用程序進(jìn)行的所描述的方法的實(shí)施例。代理服務(wù)器應(yīng)用程序接收(40 1)來自不支持交易處理的第一消息傳遞網(wǎng)絡(luò)上的第一應(yīng)用程序或產(chǎn)生應(yīng)用程序的消息。該消息包括來自第一應(yīng)用程序的關(guān)于該消息的交易處理的指令,并且,可選地,該消息包括關(guān)于該消息的功能處理的額外指令。額外功能處理可包括在點(diǎn)對(duì)點(diǎn)與發(fā)布/訂閱消息之間轉(zhuǎn)換、將多個(gè)消息編譯在一起、或轉(zhuǎn)換為多播消息。代理服務(wù)器應(yīng)用程序讀取(402)消息中提供的指令,并且轉(zhuǎn)發(fā)(403)具有該消息要被發(fā)送到的第二消息傳遞網(wǎng)絡(luò)所支持的交易處理的消息。可選地,該消息還被轉(zhuǎn)換(404)以添加其它功能性。代理服務(wù)器應(yīng)用程序?qū)㈥P(guān)于該消息的結(jié)果的消息返回(305)至第一應(yīng)用程序。提供以連接至MQ網(wǎng)絡(luò)的MQTT網(wǎng)絡(luò)為形式的第一消息傳遞網(wǎng)絡(luò)之間的示例實(shí)施例,該MQ網(wǎng)絡(luò)支持包括交易處理的較豐富的特征集合。MQ網(wǎng)絡(luò)能夠連接至智能型但具有簡(jiǎn)單的裝置的網(wǎng)絡(luò),所述裝置用于用儀器裝備(instrumenting)管線、軌道及其它遙測(cè)應(yīng)用程序,其陳述(speak)簡(jiǎn)單得多的MQTT協(xié)議。MQTT客戶端可希望(例如)將消息放置在同步點(diǎn)、將消息特性添加至消息、和/或經(jīng)由多播來廣播消息。如果代理服務(wù)器應(yīng)用程序是IBM MQ應(yīng)用程序,則MQTT客戶端將需要將請(qǐng)求路由至代理服務(wù)器應(yīng)用程序。如果代理服務(wù)器是消息傳遞網(wǎng)絡(luò)在兩個(gè)網(wǎng)絡(luò)之間的網(wǎng)關(guān)處的部分,則MQTT應(yīng)用程序可利用截取(interc印t)所述消息并對(duì)所述消息起作用的代理服務(wù)器應(yīng)用程序,將所述消息直接發(fā)送至它們的最終目的地。參考圖5,流程圖500示出產(chǎn)生應(yīng)用程序與代理服務(wù)器應(yīng)用程序之間的示例流程。該產(chǎn)生應(yīng)用程序位于僅支持發(fā)布/訂閱消息傳遞且不支持交易處理的消息傳遞網(wǎng)絡(luò)上。代理服務(wù)器應(yīng)用程序位于支持交易發(fā)布/訂閱消息傳遞和點(diǎn)對(duì)點(diǎn)消息傳遞的連接的消息傳遞網(wǎng)絡(luò)上。代理服務(wù)器應(yīng)用程序偵聽(501)發(fā)布于主題字符串:/pr0Xy/commands#上的命令。產(chǎn)生器應(yīng)用程序需要給予代理服務(wù)器應(yīng)用程序關(guān)于如何處理產(chǎn)生器應(yīng)用程序所發(fā)送的消息的指令。這可通過修改產(chǎn)生器應(yīng)用程序所使用的主題字符串、或包括作為消息中的報(bào)頭的信息來實(shí)現(xiàn)。產(chǎn)生器在/proxy/commands/producerl 上發(fā)布(502)消息:“開始稱為X的新交易,并且,作為該交易的部分,將表達(dá)(say)“Hell0”的消息(具有消息 id=l)放置至隊(duì)列 “destinationqueue””。代理服務(wù)器這樣做并且在/proxy/responses/producerl上發(fā)布(503)消息,該消息表達(dá)“消息id=l放置成功”。產(chǎn)生器在/proxy/commands/producerl 上發(fā)布(504)消息:“開始稱為Y的新交易,并且,作為該交易的部分,將表達(dá)“Hello”的消息(具有消息 id=2)放置至隊(duì)列 “destinationqueue2””。代理服務(wù)器這樣做并且在/proxy/responses/producerl上發(fā)布(505)消息,該消息表達(dá)“消息id=2放置成功”。產(chǎn)生器在/proxy/commands/producerl 上發(fā)布(506)消息:“作為交易X的部分,發(fā)布表達(dá)“Hello”的消息(具有消息id=3)到主題/happy/Christmas,,。代理服務(wù)器這樣做并且在/proxy/responses/producerl上發(fā)布(507)消息,該消息表達(dá)“消息id=3發(fā)布成功”。產(chǎn)生器在/proxy/commands/producerl 上發(fā)布(508)消息:“確認(rèn)交易X”。代理服務(wù)器回復(fù)(509) “交易X確認(rèn)ok”。產(chǎn)生器在/pr oxy/commands/producerl 上發(fā)布(510)消息:“作為交易Y的部分,發(fā)布表達(dá)“Hello”的消息(具有消息id=4)到主題/happy/christmas/secret,,。代理服務(wù)器回復(fù)(511) “消息4的放置失敗且有錯(cuò)誤:SECURITY_ERR0R_PUBLISH_N0T_ALL0WED”。產(chǎn)生器在/proxy/commands/producerl 上發(fā)布(512)消息:“退出交易Y”。代理服務(wù)器回復(fù)(513)交易Y已被取消。因此,雖然產(chǎn)生器意欲發(fā)送四個(gè)消息,但是,當(dāng)所述消息之一失敗時(shí),產(chǎn)生器可決定退出整個(gè)交易,因而僅兩個(gè)消息(具有id為I和3)被實(shí)際發(fā)送。當(dāng)與較精密的第二消息傳遞網(wǎng)絡(luò)通信時(shí),也可由代理服務(wù)器應(yīng)用程序代表第一消息傳遞系統(tǒng)而添加額外功能性。代理服務(wù)器應(yīng)用程序可代表連接的僅點(diǎn)對(duì)點(diǎn)消息傳遞網(wǎng)絡(luò)上的應(yīng)用程序而執(zhí)行發(fā)布/訂閱操作,如下所述: 代理服務(wù)器應(yīng)用程序偵聽隊(duì)列“Q1”上的命令; 產(chǎn)生器應(yīng)用程序?qū)⑾⒎胖弥痢癚1”,其中“Q1”具有包括在報(bào)頭中的主題字符串; 代理服務(wù)器應(yīng)用程序經(jīng)由第二消息傳遞網(wǎng)絡(luò)將消息發(fā)布到報(bào)頭中所列出的主題; 代理服務(wù)器應(yīng)用程序?qū)⒒貜?fù)消息發(fā)送至產(chǎn)生器應(yīng)用程序所偵聽的隊(duì)列,報(bào)告該發(fā)布是否成功。代理服務(wù)器應(yīng)用程序可代表僅發(fā)布/訂閱消息傳遞網(wǎng)絡(luò)上的應(yīng)用程序而執(zhí)行點(diǎn)對(duì)點(diǎn)消息傳遞,如下所述:
代理服務(wù)器應(yīng)用程序偵聽主題:/PROXY/COMMANDS/#上的命令; 產(chǎn)生器應(yīng)用程序發(fā)布到主題:/PROXY/COMMANDS#,并且,消息報(bào)頭中包括第二消息傳遞網(wǎng)絡(luò)上的放置消息的隊(duì)列的名稱、以及執(zhí)行放置的指令; 代理服務(wù)器應(yīng)用程序?qū)⒃撓⒎胖弥料嚓P(guān)隊(duì)列; 代理服務(wù)器應(yīng)用程序?qū)⒒貜?fù)消息發(fā)布到產(chǎn)生器應(yīng)用程序所偵聽的主題,報(bào)告該放置是否成功。代理服務(wù)器應(yīng)用程序可響應(yīng)于從連接至更不可靠的消息傳遞網(wǎng)絡(luò)的應(yīng)用程序發(fā)送的一系列消息片段,匯編單個(gè)大消息。這些片段應(yīng)該也能夠包括諸如消息特性的元數(shù)據(jù)。 代理服務(wù)器應(yīng)用程序偵聽隊(duì)列Ql上的命令; 產(chǎn)生器應(yīng)用 程序放置消息至代理服務(wù)器上的Q1,并且,在消息報(bào)頭中包括序號(hào)及標(biāo)志,以表達(dá)這是序列中的第一個(gè)消息; 接著,代理服務(wù)器應(yīng)用程序?qū)⒚總€(gè)后續(xù)消息以順序地增加的序號(hào)而放置至代理服務(wù)器應(yīng)用程序,直至最后一個(gè)消息被發(fā)送為止,該最后一個(gè)消息也在報(bào)頭中包括標(biāo)志以表達(dá)該消息是最后一個(gè)消息; 代理服務(wù)器應(yīng)用程序等待,直至已經(jīng)接收了最后一個(gè)消息并檢查無序號(hào)丟失為止,然后,代理服務(wù)器應(yīng)用程序?qū)⑺邢⒌闹黧w和元數(shù)據(jù)匯編為一個(gè)大消息,然后代理服務(wù)器應(yīng)用程序?qū)⒃摯笙l(fā)送至該第二消息傳遞網(wǎng)絡(luò); 代理服務(wù)器應(yīng)用程序?qū)⒒貜?fù)消息發(fā)送至產(chǎn)生器應(yīng)用程序所偵聽的隊(duì)列,報(bào)告該放置是否成功。代理服務(wù)器應(yīng)用程序可代表連接至不支持多播的網(wǎng)絡(luò)的應(yīng)用程序而發(fā)送多播消
肩、O 代理服務(wù)器應(yīng)用程序偵聽隊(duì)列Ql上的命令; 產(chǎn)生器應(yīng)用程序?qū)⑾⒎胖弥链矸?wù)器應(yīng)用程序上的Q1,并且,消息報(bào)頭中包括標(biāo)志,以向代理服務(wù)器應(yīng)用程序指示該消息為多播消息、以及多播所需的任何額外信息; 然后,代理服務(wù)器應(yīng)用程序經(jīng)由第二消息傳遞網(wǎng)絡(luò)發(fā)布該消息作為多播消息; 代理服務(wù)器應(yīng)用程序發(fā)送回復(fù)消息至產(chǎn)生器應(yīng)用程序所偵聽的隊(duì)列,報(bào)告該放直是否成功。簡(jiǎn)單的消息傳遞網(wǎng)絡(luò)可連接至更復(fù)雜、多特征的網(wǎng)絡(luò),并且,連接至簡(jiǎn)單網(wǎng)絡(luò)的客戶端可發(fā)送及接收這樣的消息,即,該消息像常見的簡(jiǎn)單消息、但具有嵌入到所述消息中的將要由代理服務(wù)器應(yīng)用程序解譯、且要由代理服務(wù)器應(yīng)用程序轉(zhuǎn)發(fā)至更多特征的網(wǎng)絡(luò)的指令。來自客戶端的包括控制指令的消息在到達(dá)可解碼或解譯所述指令、并使用代表客戶端的先進(jìn)特征的代理服務(wù)器之前,可流經(jīng)多個(gè)不理解所述指令的消息傳遞引擎??商峁┙灰紫鬟f支持系統(tǒng),作為針對(duì)網(wǎng)絡(luò)上的客戶端的服務(wù)。本發(fā)明可采取完全硬件實(shí)施例、完全軟件實(shí)施例、或包括硬件及軟件部件二者的實(shí)施例的形式。在優(yōu)選實(shí)施例中,本發(fā)明在軟件中實(shí)施,該軟件包括但不限于固件、常駐軟件、微代碼等。本發(fā)明可采取可從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)提供程序代碼,用以由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)、或結(jié)合計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用。為了該描述的目的,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是可包含、存儲(chǔ)、傳遞、傳播或傳輸程序的任何設(shè)備,以用于由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用,或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用。介質(zhì)可以是電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)(或設(shè)備或裝置)或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可移除計(jì)算機(jī)磁盤、隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(ROM)、硬磁盤及光盤。光盤的當(dāng)前示例包括光盤只讀存儲(chǔ)器(⑶-ROM)、光盤讀/寫(CD-R/W)及DVD。在不偏離本發(fā)明的范圍的情況下, 可對(duì)前述進(jìn)行改進(jìn)及修改。
權(quán)利要求
1.一種用于在連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的方法,所述連接的消息傳遞網(wǎng)絡(luò)具有第一消息傳遞網(wǎng)絡(luò)(110)及第二消息傳遞網(wǎng)絡(luò)(120),該第一消息傳遞網(wǎng)絡(luò)不支持交易處理,而該第二消息傳遞網(wǎng)絡(luò)支持交易處理,該方法包括 在該第一消息傳遞網(wǎng)絡(luò)與該第二消息傳遞網(wǎng)絡(luò)(110、120)之間提供代理服務(wù)器應(yīng)用程序(130),其中該代理服務(wù)器應(yīng)用程序(130) 從該第一消息傳遞網(wǎng)絡(luò)(110)上的第一應(yīng)用程序(111)接收消息,所述消息包括關(guān)于所述消息的交易處理的指令;以及 使用由該第二消息傳遞網(wǎng)絡(luò)(120)所支持的交易處理,將所述消息轉(zhuǎn)發(fā)至該第二消息傳遞網(wǎng)絡(luò)(120)。
2.如權(quán)利要求I所述的方法,其中該代理服務(wù)器應(yīng)用程序(130) 將告知該交易的結(jié)果的消息返回至該第一應(yīng)用程序(111)。
3.如權(quán)利要求I或2所述的方法,其中該代理服務(wù)器應(yīng)用程序(130) 將消息轉(zhuǎn)換為包括由該第二消息傳遞網(wǎng)絡(luò)(120)所支持的額外功能性。
4.如權(quán)利要求3所述的方法,其中該額外功能性包括 將發(fā)布/訂閱消息轉(zhuǎn)換為點(diǎn)對(duì)點(diǎn)消息。
5.如權(quán)利要求3所述的方法,其中該額外功能性包括 將點(diǎn)對(duì)點(diǎn)消息轉(zhuǎn)換為發(fā)布/訂閱消息。
6.如權(quán)利要求3所述的方法,其中該額外功能性包括 將多個(gè)短消息轉(zhuǎn)換為單個(gè)長(zhǎng)消息。
7.如權(quán)利要求3所述的方法,其中該額外功能性包括 將消息轉(zhuǎn)換為多播消息。
8.如在前權(quán)利要求中的任一項(xiàng)所述的方法,其中關(guān)于所述消息的交易處理的指令包括顯露批量消息的開始及結(jié)束,使得該第一應(yīng)用程序(111)具有控制權(quán)。
9.如在前權(quán)利要求中的任一項(xiàng)所述的方法,其中在由該第一應(yīng)用程序(111)所發(fā)送或接收的消息的報(bào)頭中提供所述指令。
10.如在前權(quán)利要求中的任一項(xiàng)所述的方法,其中在由該第一應(yīng)用程序(111)所發(fā)送或接收的消息的主題中提供所述指令。
11.如在前權(quán)利要求中的任一項(xiàng)所述的方法,其中該代理服務(wù)器應(yīng)用程序(130)訂閱主題上的消息,在該主題上發(fā)布來自該第一應(yīng)用程序(111)的指令。
12.如在前權(quán)利要求中的任一項(xiàng)所述的方法,其中該第一消息傳遞網(wǎng)絡(luò)(110)是輕量遙測(cè)傳輸網(wǎng)絡(luò),且經(jīng)由消息傳遞代理而連接至該第二消息傳遞網(wǎng)絡(luò)(120)。
13.一種計(jì)算機(jī)程序,其存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上、并且可加載到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中,所述計(jì)算機(jī)程序包括軟件代碼部分,當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí),用于執(zhí)行如權(quán)利要求1-12中的任一項(xiàng)所述的方法。
14.一種用于連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的系統(tǒng),包括 第一消息傳遞網(wǎng)絡(luò)(110),其不支持交易處理; 第二消息傳遞網(wǎng)絡(luò)(120),其支持交易處理; 代理服務(wù)器應(yīng)用程序(130),其被提供在該第一消息傳遞網(wǎng)絡(luò)(110)與第二消息傳遞網(wǎng)絡(luò)(120)之間,其中該代理服務(wù)器應(yīng)用程序(130)包括信息讀取組件(131),用于接收及讀取來自該第一消息傳遞網(wǎng)絡(luò)(110)上的第一應(yīng)用程序(111)的消息,所述消息包括關(guān)于所述消息的交易處理的指令;以及 交易處理組件(132),用于使用由該第二消息傳遞網(wǎng)絡(luò)(120)所支持的交易處理來將所述消息轉(zhuǎn)發(fā)至該第二消息傳遞網(wǎng)絡(luò)(120)。
15.如權(quán)利要求14所述的系統(tǒng),其中該代理服務(wù)器應(yīng)用程序(130)包括 功能處理組件(133),用于將消息轉(zhuǎn)換為包括由該第二消息傳遞網(wǎng)絡(luò)(120)所支持的額外功能性。
16.如權(quán)利要求15所述的系統(tǒng),其中該額外功能性包括 將發(fā)布/訂閱消息轉(zhuǎn)換為點(diǎn)對(duì)點(diǎn)消息。
17.如權(quán)利要求15所述的系統(tǒng),其中該額外功能性包括 將點(diǎn)對(duì)點(diǎn)消息轉(zhuǎn)換為發(fā)布/訂閱消息。
18.如權(quán)利要求15所述的系統(tǒng),其中該額外功能性包括 將多個(gè)短消息轉(zhuǎn)換為單個(gè)長(zhǎng)消息。
19.如權(quán)利要求15所述的系統(tǒng),其中該額外功能性包括 將消息轉(zhuǎn)換為多播消息。
20.如權(quán)利要求14至19中的任一項(xiàng)所述的系統(tǒng),其中關(guān)于所述消息的交易處理的指令包括顯露批量消息的開始及結(jié)束,使得該第一應(yīng)用程序具有控制權(quán)。
21.如權(quán)利要求14至20中的任一項(xiàng)所述的系統(tǒng),其中在由該第一應(yīng)用程序(111)所發(fā)送或接收的消息(140)的報(bào)頭(141)中提供所述指令。
22.如權(quán)利要求14至21中的任一項(xiàng)所述的系統(tǒng),其中在由該第一應(yīng)用程序(111)所發(fā)送或接收的消息的主題中提供所述指令。
23.如權(quán)利要求14至22中的任一項(xiàng)所述的系統(tǒng),其中該代理服務(wù)器應(yīng)用程序(130)訂閱主題上的消息,在該主題上發(fā)布來自該第一應(yīng)用程序(111)的指令。
24.如權(quán)利要求14至23中的任一項(xiàng)所述的系統(tǒng),其中該第一消息傳遞網(wǎng)絡(luò)(110)是輕量遙測(cè)傳輸網(wǎng)絡(luò),且經(jīng)由消息傳遞代理而連接至該第二消息傳遞網(wǎng)絡(luò)(120)。
25.如權(quán)利要求14至24中的任一項(xiàng)所述的系統(tǒng),其中該代理服務(wù)器應(yīng)用程序(130)是單機(jī)應(yīng)用程序。
26.如權(quán)利要求14至25中的任一項(xiàng)所述的系統(tǒng),其中該代理服務(wù)器應(yīng)用程序(130)被構(gòu)建為該第一消息傳遞網(wǎng)絡(luò)(110)或該第二消息傳遞網(wǎng)絡(luò)(120)中之一。
27.如權(quán)利要求14至26中的任一項(xiàng)所述的系統(tǒng),其中該代理服務(wù)器應(yīng)用程序(130)被構(gòu)建為該第一消息傳遞網(wǎng)絡(luò)(110)與該第二消息傳遞網(wǎng)絡(luò)(120)之間的網(wǎng)關(guān)。
28.一種用于在連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的計(jì)算機(jī)程序產(chǎn)品,所述連接的消息傳遞網(wǎng)絡(luò)具有第一消息傳遞網(wǎng)絡(luò)(110)及第二消息傳遞網(wǎng)絡(luò)(120),該第一消息傳遞網(wǎng)絡(luò)不支持交易處理,而該第二消息傳遞網(wǎng)絡(luò)支持交易處理,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可由處理電路讀取、并存儲(chǔ)用于由該處理電路執(zhí)行以執(zhí)行根據(jù)權(quán)利要求1-12中的任一項(xiàng)所述的方法的指令。
全文摘要
提供了一種用于連接的消息傳遞網(wǎng)絡(luò)中的交易消息傳遞支持的方法和系統(tǒng)。提供第一消息傳遞網(wǎng)絡(luò)(110)和第二消息傳遞網(wǎng)絡(luò)(120),該第一消息傳遞網(wǎng)絡(luò)不支持交易處理,而該第二消息傳遞網(wǎng)絡(luò)支持交易處理。在第一消息傳遞網(wǎng)絡(luò)與第二消息傳遞網(wǎng)絡(luò)之間提供代理服務(wù)器應(yīng)用程序(130)。代理服務(wù)器應(yīng)用程序從第一消息傳遞網(wǎng)絡(luò)上的第一應(yīng)用程序接收消息(310),所述消息包括關(guān)于所述消息的交易處理的指令,并且該代理服務(wù)器應(yīng)用程序使用第二消息傳遞網(wǎng)絡(luò)所支持的交易處理來將所述消息(310)轉(zhuǎn)發(fā)至該第二消息傳遞網(wǎng)絡(luò)。
文檔編號(hào)G06F9/46GK103238137SQ201180056233
公開日2013年8月7日 申請(qǐng)日期2011年11月17日 優(yōu)先權(quán)日2010年11月24日
發(fā)明者J.里維爾, M.D.皮爾 申請(qǐng)人:國際商業(yè)機(jī)器公司