專利名稱:改進(jìn)的郵件系統(tǒng)消息排隊(duì)分配業(yè)務(wù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于在網(wǎng)絡(luò)中的程序間通信的改進(jìn)的消息排隊(duì)(MQ)郵件系統(tǒng)。
報(bào)文傳遞是一種存儲(chǔ)轉(zhuǎn)發(fā)異步消息傳遞系統(tǒng),其基本目的是允許應(yīng)用程序在不要求源應(yīng)用程序和目的地應(yīng)用程序同時(shí)處于活動(dòng)狀態(tài)的條件下進(jìn)行通信。系統(tǒng)在必要時(shí)存儲(chǔ)消息,在有資源可用時(shí)遞送該信息。報(bào)文發(fā)送的第一個(gè)例子是電子郵件,例如X.400建議的消息處理系統(tǒng)和簡(jiǎn)單郵件傳輸系統(tǒng)(SMTP)。在客戶機(jī)/服務(wù)器計(jì)算的當(dāng)今世界,基于報(bào)文發(fā)送的商務(wù)解決方案的要求的范圍和深度遠(yuǎn)遠(yuǎn)超過(guò)了基本的電子郵件功能工作流的計(jì)算、移動(dòng)報(bào)文發(fā)送、事務(wù)處理的報(bào)文發(fā)送、對(duì)象報(bào)文發(fā)送、數(shù)據(jù)復(fù)制業(yè)務(wù)都是在程序?qū)Τ绦蛲ㄐ诺膱?bào)文傳遞風(fēng)格的基礎(chǔ)上出現(xiàn)的新興技術(shù)。程序在不同操作系統(tǒng)平臺(tái)和(有線或無(wú)線)網(wǎng)絡(luò)之間跨系統(tǒng)操作,也是對(duì)報(bào)文傳遞系統(tǒng)提出新要求的原因。
報(bào)文傳遞已經(jīng)變成提供程序至程序通信的一項(xiàng)基礎(chǔ)技術(shù)。許多公司已經(jīng)開(kāi)發(fā)出面向報(bào)文的中間件以提供靈活的報(bào)文傳遞基礎(chǔ)結(jié)構(gòu)。IBM正在推出一種極具商業(yè)價(jià)值的能安全地一次性發(fā)送報(bào)文以及具有報(bào)文可恢復(fù)性的報(bào)文傳遞系統(tǒng)MQ Series。其它已知的MOM產(chǎn)品有Communications Integrator(Covia)、ezBridge(Systems Strategies)、Message Express(Horizon Strategies),等等。
MOM允許使用報(bào)文隊(duì)列在程序間進(jìn)行通用報(bào)文的交換。用戶僅僅通過(guò)在隊(duì)列中置入報(bào)文、從隊(duì)列中取出報(bào)文就能在網(wǎng)絡(luò)上進(jìn)行通信。MOM的報(bào)文傳遞和排隊(duì)MQ使程序無(wú)需由私有專用邏輯連接相連就能實(shí)現(xiàn)網(wǎng)際通信。在MQ準(zhǔn)備好發(fā)送報(bào)文之前,報(bào)文一直被存儲(chǔ)在網(wǎng)絡(luò)的中間節(jié)點(diǎn)中。報(bào)文到達(dá)最終目的地時(shí),被放在隊(duì)列中,直到目標(biāo)程序準(zhǔn)備好提取和處理該報(bào)文。網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)處都有一個(gè)隊(duì)列管理器(QM),其功能是保證報(bào)文到達(dá)目標(biāo)隊(duì)列并為應(yīng)用提供MQ服務(wù)。
MOM使程序能做到彼此之間不直接交談,這就使交談的程序中能有一方程序在同一時(shí)刻或忙于其它事務(wù)、或拒絕他人訪問(wèn)、或干脆就不運(yùn)行。程序有權(quán)決定何時(shí)想從其報(bào)文隊(duì)列中提取報(bào)文。進(jìn)行無(wú)線通信的用戶,如果手頭有電話或能用上辦公室的局域網(wǎng)(LAN),甚至就可以將所有要向外發(fā)送的信息集中于一個(gè)隊(duì)列中,再向服務(wù)器發(fā)送。進(jìn)入的郵件可以被存放在隊(duì)列中,直到建立到收件人的連接(例如通過(guò)無(wú)線連接)。MQ的功能多種多樣。人們可以用它來(lái)建立一對(duì)多和/或多對(duì)一的關(guān)系,即一個(gè)隊(duì)列可被數(shù)個(gè)應(yīng)用程序服務(wù),多個(gè)應(yīng)用程序可以將報(bào)文放入同一隊(duì)列。
MOM中間件是促進(jìn)分布式商務(wù)應(yīng)用的發(fā)展必不可少的一個(gè)關(guān)鍵單元。MOM一般為其服務(wù)提供一種非常簡(jiǎn)單的高層次應(yīng)用編程接口(API)。多數(shù)MOM產(chǎn)品能在多操作系統(tǒng)平臺(tái)上使用這種API。這極大地簡(jiǎn)化了對(duì)在不同平臺(tái)上運(yùn)行、通過(guò)網(wǎng)絡(luò)通信的分布式應(yīng)用軟件的開(kāi)發(fā)工作。只需將應(yīng)用程序?qū)懭胍粋€(gè)接口中。此外,MOM所有通信都是對(duì)應(yīng)用程序隱藏的。通信進(jìn)行時(shí)應(yīng)用程序?qū)W(wǎng)絡(luò)罔然無(wú)知,不承載任何通信負(fù)擔(dān),例如建立鏈路、鏈路管理等等。
MOM提供的MQ服務(wù)是建立電子郵件系統(tǒng)的一種理想的基礎(chǔ)結(jié)構(gòu)。郵件系統(tǒng)由一組接收郵件報(bào)文、處理郵件向收件人發(fā)送的郵件服務(wù)器組成。郵件服務(wù)器就像是郵局它將本地收件人的郵件投遞到其電子郵箱,將外地收件人的郵件發(fā)送到其它郵件服務(wù)器去投遞。郵件被投遞之前可能要在好幾個(gè)郵件服務(wù)器逗留。將收件人在外地的郵件發(fā)送到另一個(gè)郵件服務(wù)器的過(guò)程稱為郵件重定向。
使用MOM的MQ服務(wù)傳送郵件的郵件系統(tǒng),若要有效率,應(yīng)具有下列性質(zhì)向收件人傳送途中的報(bào)文僅在必要時(shí)被復(fù)制,即僅在MQ網(wǎng)絡(luò)中通往收件人的路徑分叉的節(jié)點(diǎn)處被復(fù)制;只能向報(bào)文的每個(gè)收件人投遞一份報(bào)文。
郵件服務(wù)器處理郵往多個(gè)收件人的郵件的程序是將所有本地收件人的郵件報(bào)文投遞到其電子郵箱,將外地收件人的郵件發(fā)送到負(fù)責(zé)處理外地收件人郵件的各個(gè)郵件服務(wù)器。MQ網(wǎng)絡(luò)中從發(fā)送郵件的郵件服務(wù)器出發(fā)、通向該郵件必須被發(fā)送至的所有服務(wù)器的郵路,開(kāi)始可能會(huì)有一段共同路段。即使郵件要被發(fā)送到不同的郵件服務(wù)器,在開(kāi)始的共同路段上也只能傳遞一份郵件報(bào)文。報(bào)文僅僅在必要時(shí)一即分叉處被復(fù)制,以避免產(chǎn)生不必要的網(wǎng)絡(luò)負(fù)荷。在工作繁忙的網(wǎng)絡(luò)上尤其有必要在這種情況下避免加重網(wǎng)絡(luò)的負(fù)荷。
如果一種報(bào)文由數(shù)個(gè)郵件服務(wù)器重定向到一個(gè)收件人,就會(huì)有多份報(bào)文拷貝到達(dá)一個(gè)收件人。在設(shè)計(jì)、配置適當(dāng)?shù)泥]件系統(tǒng)中不應(yīng)發(fā)生一種郵件報(bào)文被多重地重定向到同一收件人的情況。這會(huì)導(dǎo)致不必要的報(bào)文復(fù)制,加重網(wǎng)絡(luò)的負(fù)荷,浪費(fèi)郵件服務(wù)器的計(jì)算力和存儲(chǔ)空間。收件人還要進(jìn)行刪除重復(fù)報(bào)文的繁瑣工作,除非收件人的郵件服務(wù)器負(fù)擔(dān)這項(xiàng)任務(wù)。
本發(fā)明的目的是提供一種方法和適當(dāng)?shù)难b置,以期在使用MOM的MQ服務(wù)傳送郵件的郵件系統(tǒng)中,杜絕MQ網(wǎng)絡(luò)中不必要的報(bào)文復(fù)制并僅當(dāng)有必要時(shí)執(zhí)行郵件報(bào)文的重定向。本發(fā)明提供的方法和裝置因此減少了郵件服務(wù)器和報(bào)文排隊(duì)網(wǎng)絡(luò)上的負(fù)荷量。它們的其它優(yōu)點(diǎn)是無(wú)需要求MQ系統(tǒng)訪問(wèn)服務(wù)郵件目錄,使得用MQ網(wǎng)絡(luò)進(jìn)行郵件傳輸?shù)男侍岣摺?br>
本文將參照以下附圖對(duì)本發(fā)明作詳細(xì)說(shuō)明。
附
圖1表示的是一個(gè)部分網(wǎng)絡(luò)系統(tǒng),其中有兩個(gè)通過(guò)計(jì)算機(jī)與網(wǎng)絡(luò)連接、擔(dān)任郵件服務(wù)器和隊(duì)列管理器的用戶。
附圖2表示一個(gè)使用報(bào)文排隊(duì)網(wǎng)絡(luò)傳輸郵件報(bào)文的郵件系統(tǒng)。
附圖3A是按照本發(fā)明的一例收件人清單。
附圖3B是按照本發(fā)明的一例遠(yuǎn)程收件人表。
附圖3C是按照本發(fā)明的一例郵件服務(wù)器表。
附圖3D是按照本發(fā)明的一例隊(duì)列清單表。
附圖3E是按照本發(fā)明的一例隊(duì)列子清單。
附圖4是用于解釋按照本發(fā)明建立遠(yuǎn)程收件人表的所執(zhí)行的步驟的流程圖。
附圖5是用于解釋按照本發(fā)明建立隊(duì)列清單的所執(zhí)行的步驟的流程圖。
附圖6所示流程圖,用于解釋按照本發(fā)明思想,隊(duì)列管理器接收到一個(gè)具有關(guān)聯(lián)的隊(duì)列清單的郵件報(bào)文時(shí)的執(zhí)行步驟。
附圖7所示流程圖,用于解釋按照本發(fā)明思想,郵件服務(wù)器接收到一個(gè)在郵件服務(wù)器表中有其條目的郵件報(bào)文時(shí)的執(zhí)行步驟。
附圖8A是按照本發(fā)明的一例收件人清單。
附圖8B是按照本發(fā)明的一例遠(yuǎn)程收件人表。
附圖8C是按照本發(fā)明的一例郵件目錄子集。
附圖8D是按照本發(fā)明的一例郵件服務(wù)器表。
附圖8E是按照本發(fā)明的一例隊(duì)列清單。
附圖8F是按照本發(fā)明的一例MQ目錄子集。
附圖8G是按照本發(fā)明的一例隊(duì)列子清單。
附圖9是按照本發(fā)明的另一例郵件服務(wù)器表。
本文將采用以下術(shù)語(yǔ)對(duì)本發(fā)明作詳細(xì)說(shuō)明。發(fā)件人 發(fā)件人是創(chuàng)建并發(fā)送郵件報(bào)文的實(shí)體,例如應(yīng)用程序。收件人 收件人是郵件報(bào)文被定向到的實(shí)體,例如應(yīng)用程序。用戶 用戶就是發(fā)件人或收件人,區(qū)別不重要時(shí)使用該詞。目的地隊(duì)列 目的地隊(duì)列是MQ報(bào)文被定向到的實(shí)體。通常有一個(gè)或幾個(gè)程序?qū)嶓w讀取目的地隊(duì)列中內(nèi)容。隊(duì)列管理器 隊(duì)列管理器是MQ報(bào)文傳遞系統(tǒng)中的存儲(chǔ)-發(fā)送程序?qū)嶓w。郵件服務(wù)器 郵件服務(wù)器是郵件報(bào)文傳遞系統(tǒng)中的存儲(chǔ)-發(fā)送程序?qū)嶓w。收件人清單 收件人清單(RL)是郵件報(bào)文應(yīng)被投遞到的收件人的清單。附圖3A中有一個(gè)收件人清單的例子。遠(yuǎn)程收件人表 遠(yuǎn)程收件人表是與一個(gè)郵件報(bào)文相關(guān)聯(lián)的表的結(jié)構(gòu),它是按照郵件接收者組織的,并且對(duì)于在RL中所列出的每一個(gè)郵件接收人它指示由該郵件服務(wù)器負(fù)責(zé)為其投遞報(bào)文。附圖3B中有一個(gè)遠(yuǎn)程收件人表的例子。郵件服務(wù)器表 與一個(gè)郵件報(bào)文相關(guān)聯(lián)的郵件服務(wù)器表,它是按照郵件服務(wù)器組織的,并且對(duì)于每一郵件服務(wù)器,它表示該郵件服務(wù)器為其投遞報(bào)文的一個(gè)或多個(gè)郵件接收人。附圖3C中有一個(gè)郵件服務(wù)器表的例子。隊(duì)列清單 隊(duì)列清單(QL)是MQ報(bào)文應(yīng)被投遞到的目的地隊(duì)列清單。附圖3D中有一個(gè)隊(duì)列清單的例子。隊(duì)列子清單 隊(duì)列子清單是清單隊(duì)列中共享由隊(duì)列表指明的同一主管隊(duì)列管理器的隊(duì)列表的一個(gè)分區(qū)。隊(duì)列表中有多少不同的主管隊(duì)列管理器,就有多少隊(duì)列子清單。附圖3E中有一個(gè)隊(duì)列子清單的例子。郵件目錄郵件目錄指示的是各收件人對(duì)應(yīng)的、負(fù)責(zé)向該收件人投遞郵件報(bào)文的那個(gè)郵件服務(wù)器。MQ目錄 MQ目錄指示的是各郵件服務(wù)器對(duì)應(yīng)的目的地隊(duì)列。MQ目錄指示各目的地隊(duì)列對(duì)應(yīng)的、負(fù)責(zé)向該目的地隊(duì)列投遞MQ報(bào)文的那個(gè)隊(duì)列管理器。
在說(shuō)明本發(fā)明之前,首先詳細(xì)介紹一下本發(fā)明要解決的問(wèn)題。
附圖1是一例局部的郵件系統(tǒng)的示意圖。整個(gè)郵件系統(tǒng)的框圖在附圖2中給出。如附圖1所示,兩個(gè)用戶11和12通過(guò)郵件服務(wù)器和隊(duì)列管理器13與網(wǎng)絡(luò)14相連。其中,便攜式計(jì)算機(jī)12通過(guò)RF無(wú)線鏈路與服務(wù)器13相連。
附圖2的方框圖表示一個(gè)典型的郵件系統(tǒng),它由幾個(gè)郵件服務(wù)器20.1~20.5以及這些郵件服務(wù)器服務(wù)的郵件系統(tǒng)用戶a1、a2、b1、b2等組成。附圖2所示系統(tǒng)是一例使用報(bào)文傳遞和排隊(duì)系統(tǒng)在郵件服務(wù)器之間進(jìn)行報(bào)文傳輸?shù)泥]件系統(tǒng)。MQ系統(tǒng)中有隊(duì)列管理器21.1~21.7。
在下面的簡(jiǎn)單例子中,用戶a1通過(guò)其本地郵件服務(wù)器A 20.1提交一份要發(fā)送到用戶b1的郵件報(bào)文。用戶b1是郵件服務(wù)器B 20.2的本地用戶,該郵件服務(wù)器從隊(duì)列Q_MSB 22.2中提取報(bào)文。郵件服務(wù)器A 20.1將郵件報(bào)文封裝成MQ報(bào)文,調(diào)用隊(duì)列管理器QM_121.1的服務(wù)將郵件報(bào)文放置到Q_MSB@QM_3(本文中@表示“在…之處的”)。隊(duì)列管理器QM_1 21.1通過(guò)其所在的通信網(wǎng)絡(luò)將該郵件報(bào)文傳輸?shù)絈M_321.3,QM_3 21.3將其置于本地隊(duì)列Q_MSB 22.2中。然后,郵件服務(wù)器B 20.2從隊(duì)列Q_MSB 22.2中提取郵件報(bào)文,投遞給本地用戶b1。
現(xiàn)在假設(shè)用戶a1想把一個(gè)郵件報(bào)文發(fā)送給多個(gè)用戶郵件服務(wù)器B20.2服務(wù)的b2、郵件服務(wù)器C 20.3服務(wù)的c1、郵件服務(wù)器D 20.4服務(wù)的d2、郵件服務(wù)器B 20.5服務(wù)的e1。郵件服務(wù)器A 20.1的一種辦法是將郵件報(bào)文封裝成4份MQ報(bào)文(因?yàn)楸纠杏?個(gè)接收地址),在隊(duì)列 Q_MSB@QM_3、Q_MSC@QM_5、Q_MSD@QM_6、Q_MSE@QM_7的每一個(gè)中放置一份MQ報(bào)文。這種方法的后果是,對(duì)連接隊(duì)列管理器的通信鏈路的使用不經(jīng)濟(jì),因?yàn)?份內(nèi)容相同的郵件報(bào)文都要從QM_1經(jīng)過(guò)QM_2到達(dá)QM_3。其中的兩個(gè)還要一起經(jīng)過(guò)路程QM_3到QM_4。
郵件在到達(dá)最終向收件人郵箱投遞的服務(wù)器之前可以被多個(gè)郵件服務(wù)器重定向。在我們討論的例子中,如果服務(wù)器A處的郵件目錄表明,郵件服務(wù)器B負(fù)責(zé)處理向用戶e1發(fā)送的郵件,則服務(wù)器B就要將向用戶e1發(fā)送的郵件重定向,把它傳遞給服務(wù)器E。進(jìn)一步假設(shè),如果服務(wù)器A處的郵件目錄表明,郵件服務(wù)器C和D分別負(fù)責(zé)處理收件人c1和d2的郵件。則在這種情況下,郵件是通過(guò)由隊(duì)列管理器QM_2、QM_3、QM_4把郵件報(bào)文分送到隊(duì)列管理器QM_5和QM_6后再被投遞到收件人C1和d2的。因此,郵件服務(wù)器B必須只將郵件重定向到收件人e1,決不能將郵件重定向到收件人c1和d2。到收件人c1和d2的重定向毫無(wú)必要,必須避免,否則會(huì)導(dǎo)致報(bào)文在MQ網(wǎng)絡(luò)上的不必要的復(fù)制,以及將兩份相同的報(bào)文傳送給郵件服務(wù)器C和D的每一個(gè)。
本發(fā)明用下列手段來(lái)防止浪費(fèi)資源的報(bào)文復(fù)制和重定向。
·定義郵件和MQ報(bào)文系統(tǒng)的尋址信息·定義創(chuàng)建、操作、使用該尋址信息的過(guò)程,該過(guò)程要保證在網(wǎng)絡(luò)中僅當(dāng)需要時(shí)報(bào)文才能被復(fù)制和重定向。
發(fā)件人通過(guò)建立在MQ系統(tǒng)基礎(chǔ)上的郵件系統(tǒng)向收件人投遞郵件報(bào)文的過(guò)程中,經(jīng)歷幾種操作。創(chuàng)建要傳送的郵件的實(shí)體向其本地郵件服務(wù)器遞交郵件報(bào)文和相關(guān)的收件人清單。后者接收郵件報(bào)文和相關(guān)的收件人清單,承擔(dān)起向各個(gè)收件人投遞郵件報(bào)文—即將郵件投入本地收件人的信箱,向遠(yuǎn)程收件人發(fā)送郵件—的責(zé)任。向遠(yuǎn)程收件人發(fā)送的郵件要交給MQ系統(tǒng)傳輸。MQ網(wǎng)絡(luò)中節(jié)點(diǎn)處的隊(duì)列管理器為這些報(bào)文選擇路由,把它們送到最終目的地,方法是根據(jù)具體情況,要么執(zhí)行本地投遞,要么將MQ報(bào)文再次選擇路由。接收到MQ系統(tǒng)發(fā)送的報(bào)文的郵件服務(wù)器將本地收件人的郵件投遞給收件人,將向遠(yuǎn)程收件人投遞的郵件重定向,重定向的具體做法是將報(bào)文再次遞交給MQ系統(tǒng),將郵件報(bào)文傳遞給負(fù)責(zé)處理該遠(yuǎn)程收件人的郵件的郵件服務(wù)器。
所有這些操作都可按四個(gè)過(guò)程進(jìn)行描述郵件服務(wù)器在發(fā)端點(diǎn)(originating site)接收郵件;郵件服務(wù)器向MQ系統(tǒng)提交MQ報(bào)文;隊(duì)列管理器投遞MQ報(bào)文或?yàn)槠渲匦伦髀酚蛇x擇;郵件服務(wù)器投遞傳遞來(lái)的郵件報(bào)文或?yàn)槠渲囟ㄏ颉`]件服務(wù)器在發(fā)端點(diǎn)執(zhí)行MQ郵件提交過(guò)程,并執(zhí)行郵件重定向。這些過(guò)程要執(zhí)行任務(wù),就要?jiǎng)?chuàng)建和處理尋址信息。在對(duì)各過(guò)程作詳細(xì)描述之前,我們首先定義這些過(guò)程需要使用的尋址信息。尋址信息郵件報(bào)文的目的地是收件人。一個(gè)郵件報(bào)文與一個(gè)對(duì)應(yīng)的收件人清單RL相關(guān),上面列出收件人的名錄。與單一收件人相關(guān)聯(lián)的尋址信息是收件人名稱、負(fù)責(zé)處理該收件人的報(bào)文的郵件服務(wù)器名稱。整個(gè)信息存放在收件人清單RL內(nèi)關(guān)于遠(yuǎn)程收件人的遠(yuǎn)程收件人表RRT中(不必為本地收件人產(chǎn)生尋址信息,因?yàn)楸镜厥占说泥]件被直接投遞到其郵箱,無(wú)需在MQ網(wǎng)絡(luò)中傳輸)。以郵件服務(wù)器而不是以收件人組織遠(yuǎn)程收件人表RRT中的信息,就得到郵件服務(wù)器表MST。所以,MST是通過(guò)翻轉(zhuǎn)RRT得出的,它指示的是各郵件服務(wù)器對(duì)應(yīng)的、由該郵件服務(wù)器負(fù)責(zé)為其投遞報(bào)文收件人清單。
MQ報(bào)文目的地是隊(duì)列。一個(gè)MQ報(bào)文與一個(gè)隊(duì)列清單QL相關(guān),該清單列出其目的地隊(duì)列。該目的地隊(duì)列由隊(duì)列名稱和與該隊(duì)列是本地關(guān)系的隊(duì)列管理器的名稱確定。收件人清單的創(chuàng)建與郵件報(bào)文關(guān)聯(lián)的收件人清單RL,由向本地郵件服務(wù)器遞交郵件的實(shí)體創(chuàng)建,或者由執(zhí)行郵件重定向的郵件服務(wù)器創(chuàng)建。附圖3A中有一個(gè)收件人清單的例子。遠(yuǎn)程收件人表的創(chuàng)建郵件系統(tǒng)中有一個(gè)郵件目錄,指出各收件人對(duì)應(yīng)的、負(fù)責(zé)向該收件人投遞郵件報(bào)文的那個(gè)郵件服務(wù)器。值得注意的是,假設(shè)所有郵件服務(wù)器的標(biāo)識(shí)符都是獨(dú)一無(wú)二的。遠(yuǎn)程收件人表RRT創(chuàng)建過(guò)程是,郵件服務(wù)器在MQ報(bào)文提交過(guò)程中,查閱郵件目錄,找到收件人清單RL中各遠(yuǎn)程收件人對(duì)應(yīng)的、負(fù)責(zé)向該遠(yuǎn)程收件人投遞報(bào)文的那個(gè)郵件服務(wù)器的標(biāo)識(shí)符,將其連同該遠(yuǎn)程收件人名稱一起加到RRT中。過(guò)程各步驟如附圖4所示,附圖3B中有一個(gè)遠(yuǎn)程收件人表的例子。郵件服務(wù)器表的創(chuàng)建郵件服務(wù)器表MST是在MQ報(bào)文提交過(guò)程中通過(guò)翻轉(zhuǎn)遠(yuǎn)程收件人表RRT而獲得的,指出每個(gè)郵件服務(wù)器負(fù)責(zé)的收件人。附圖3C中有一個(gè)郵件服務(wù)器表的例子。用戶也可以將遠(yuǎn)程收件人表與郵件報(bào)文一并傳輸,而不必創(chuàng)建郵件服務(wù)器表。如果是這種情況,接收郵件報(bào)文及其關(guān)聯(lián)的遠(yuǎn)程收件人表的各郵件服務(wù)器需按照遠(yuǎn)程收件人表而不是郵件服務(wù)器表來(lái)操作。隊(duì)列清單的創(chuàng)建與MQ報(bào)文關(guān)聯(lián)的隊(duì)列清單QL由郵件服務(wù)器在MQ報(bào)文提交過(guò)程創(chuàng)建,或者由執(zhí)行重新路由選擇的隊(duì)列管理器創(chuàng)建。附圖5表示了各創(chuàng)建過(guò)程的步驟。附圖3D中有一個(gè)隊(duì)列清單的例子。郵件服務(wù)器在發(fā)端點(diǎn)接收郵件郵件服務(wù)器在創(chuàng)建郵件的發(fā)端點(diǎn)接收郵件報(bào)文及其關(guān)聯(lián)的收件人清單,承擔(dān)起郵件投遞的責(zé)任。本地收件人的郵件報(bào)文被直接投入本地收件人的郵箱。地址是遠(yuǎn)程收件人的郵件則必須通過(guò)在MQ網(wǎng)絡(luò)上的傳輸向收件人傳遞。郵件服務(wù)器通過(guò)調(diào)用下述MQ報(bào)文提交過(guò)程執(zhí)行郵件傳遞。郵件服務(wù)器向MQ系統(tǒng)提交MQ報(bào)文該過(guò)程由發(fā)端點(diǎn)的郵件服務(wù)器和執(zhí)行郵件重定向的服務(wù)器執(zhí)行。對(duì)于給定的郵件報(bào)文和關(guān)聯(lián)的收件人清單,要執(zhí)行以下步驟1.根據(jù)遠(yuǎn)程收件人清單RL中的遠(yuǎn)程收件人,創(chuàng)建遠(yuǎn)程收件人表RRT。參見(jiàn)附圖4。
2.通過(guò)翻轉(zhuǎn)遠(yuǎn)程收件人表RRT創(chuàng)建郵件服務(wù)器表MST。前面提到,此步驟可以省略。
3.根據(jù)遠(yuǎn)程收件人表RRT創(chuàng)建隊(duì)列清單QL。參見(jiàn)附圖5。
4.將郵件報(bào)文及郵件服務(wù)器表MST封裝成一個(gè)MQ報(bào)文。
5.MQ報(bào)文與隊(duì)列清單QL一起被提交給隊(duì)列管理器。隊(duì)列管理器進(jìn)行投遞/轉(zhuǎn)發(fā)隊(duì)列管理器可以從兩個(gè)渠道接收MQ報(bào)文及其關(guān)聯(lián)的隊(duì)列清單QL(1)執(zhí)行MQ報(bào)文提交過(guò)程的郵件服務(wù)器,(2)相鄰位置的隊(duì)列管理器。MQ報(bào)文中含有封裝的包括其關(guān)聯(lián)的郵件服務(wù)器表MST的郵件報(bào)文。隊(duì)列管理器必須根據(jù)隊(duì)列清單QL判定所列的各目的地隊(duì)列是本地的還是遠(yuǎn)程的。若是前者,報(bào)文就被置入隊(duì)列;若是后者,隊(duì)列管理器還要根據(jù)MQ目錄,確定負(fù)責(zé)將報(bào)文傳遞到目的地隊(duì)列的下個(gè)隊(duì)列管理器,并將目的地隊(duì)列添加到該下一跳躍(hop)隊(duì)列管理器的隊(duì)列子清單QSL中。一旦對(duì)隊(duì)列清單QL中的所有目的地隊(duì)列處理完畢,隊(duì)列管理器就向每個(gè)下一跳躍隊(duì)列管理器傳遞一份MQ報(bào)文,以及對(duì)于該下一隊(duì)列管理器一個(gè)與該隊(duì)列子清單相同的新的關(guān)聯(lián)隊(duì)列清單。該過(guò)程的步驟如附圖6所示。郵件服務(wù)器對(duì)傳遞來(lái)的郵件報(bào)文進(jìn)行投遞和重定向從MQ系統(tǒng)接收到報(bào)文的郵件服務(wù)器從MQ報(bào)文中提取郵件報(bào)文及其關(guān)聯(lián)的郵件服務(wù)器表MST。MST中帶該郵件服務(wù)器標(biāo)識(shí)符的條目為郵件服務(wù)器指示其應(yīng)負(fù)責(zé)的收件人。郵件服務(wù)器將本地收件人的郵件報(bào)文投遞到收件人的郵箱,為遠(yuǎn)程收件人創(chuàng)建一個(gè)收件人清單RL,通過(guò)執(zhí)行上述的MQ報(bào)文提交過(guò)程將郵件再次提交給MQ系統(tǒng)。該過(guò)程的各步驟如附圖7所示。
為了更好地闡述本發(fā)明,我們來(lái)結(jié)合附圖2討論前面概述部分一開(kāi)始的例子。用戶a1準(zhǔn)備郵件報(bào)文,將其與收件人清單RL相關(guān),該RL如附圖8A所示,內(nèi)含用戶a1、b2、c1、d2、e1。郵件服務(wù)器A 20.1根據(jù)該給定的RL,將報(bào)文投遞給本地用戶a1。然后,郵件服務(wù)器A 20.1執(zhí)行附圖4的步驟,創(chuàng)建附圖8B所示的遠(yuǎn)程用戶收件人表RRT。附圖8C是郵件服務(wù)器A 20.1在該過(guò)程中所用的一個(gè)郵件目錄條目子集。要注意的是,代表用戶e1的目錄條目指出,郵件服務(wù)器B 20.2要負(fù)責(zé)處理向用戶e1的投遞,這將需要由郵件服務(wù)器B 20.2進(jìn)行重定向(見(jiàn)下文)。然后,郵件服務(wù)器A 20.1通過(guò)翻轉(zhuǎn)附圖8B的遠(yuǎn)程收件人表RRT,創(chuàng)建附圖8D所示的郵件服務(wù)器表MST。然后,郵件服務(wù)器A20.1執(zhí)行附圖5的步驟,創(chuàng)建附圖8E所示的隊(duì)列清單QL。附圖8F表示郵件服務(wù)器在該過(guò)程中所用的MQ目錄的條目子集。最后,郵件服務(wù)器A 20.1將郵件報(bào)文和附圖8D的郵件服務(wù)器表MST封裝成一個(gè)MQ報(bào)文,將其與附圖8E的隊(duì)列清單QL一起交給隊(duì)列管理器QM_1 21.1。
隊(duì)列管理器QM_1 21.1按照附圖6的方法執(zhí)行投遞/重新路由選擇功能。由于QM_1~QM_2是該報(bào)文發(fā)送路徑上的公共路段,所以就產(chǎn)生一個(gè)與附圖8E的源QL相同的隊(duì)列子清單QSL(QM_2)。這樣,只有一個(gè)MQ報(bào)文被傳遞到隊(duì)列管理器QM_2 21.2,而隊(duì)列管理器QM_221.2的隊(duì)列清單與附圖8E的源QL內(nèi)容相同。
接著輪到隊(duì)列管理器QM_2 21.2來(lái)按附圖6的方法執(zhí)行投遞/重新路由選擇功能。同樣,由于QM_2~QM_3是該報(bào)文發(fā)送路徑上的公共路段,所以就產(chǎn)生一個(gè)與附圖8E的源QL內(nèi)容相同的隊(duì)列子清單QSL(QM_3)。同樣,只有一個(gè)MQ報(bào)文被傳遞到其隊(duì)列清單與附圖8E的源QL相同的隊(duì)列管理器QM_3 21.3。
隊(duì)列管理器QM_3 21.3也按附圖6的方法執(zhí)行投遞/重新路由選擇功能。附圖8E的QL的第一個(gè)條目中的隊(duì)列管理器名QM_3與本地隊(duì)列管理器的名稱相同。于是QM_3 21.3就對(duì)應(yīng)地將一份MQ報(bào)文送到本地隊(duì)列Q_MSB 22.2。附圖8E的QL的第二個(gè)條目中的隊(duì)列管理器名是QM_5。隊(duì)列管理器QM_3 21.3確定QM_4 21.4是通向QM_5的下一跳躍隊(duì)列管理器,于是就初始化一個(gè)隊(duì)列子清單QSL(QM_4),將附圖8E的QL的第二個(gè)條目添入該隊(duì)列子清單中。與此類似,附圖8E的QL的第三個(gè)條目中的隊(duì)列管理器名是QM_6。隊(duì)列管理器QM_3 21.3確定QM_4 21.4又是通向QM_6 21.6的下一跳躍隊(duì)列管理器,于是就將附圖8E的QL的第三個(gè)條目也添入該隊(duì)列子清單QSL(QM_4)中,結(jié)果如附圖8G所示。然后,隊(duì)列管理器QM_3 21.3將MQ報(bào)文連同一個(gè)與QSL(QM_4)內(nèi)容相同的隊(duì)列清單QL送到QM_4 21.4。
郵件服務(wù)器B 20.2從Q_MSB 22.2中取出MQ報(bào)文,從中提取郵件報(bào)文和附圖8D的郵件服務(wù)器表。然后,郵件服務(wù)器B 20.2按附圖7的方法執(zhí)行投遞/重定向功能。郵件服務(wù)器B 20.2從郵件服務(wù)器表MST中取出條目,依次對(duì)所列各收件人進(jìn)行處理。此時(shí)它確定只有收件人b2是本地用戶,就將郵件報(bào)文投遞到該用戶的郵箱。對(duì)于e1,郵件服務(wù)器B20.2識(shí)別出該用戶不是本地用戶,因此需要將該報(bào)文重定向。初始化一個(gè)新的收件人清單RL,并且將e1放入該RL中。然后郵件服務(wù)器B再次將該郵件報(bào)文的一個(gè)拷貝以及這一新的RL進(jìn)行提交。現(xiàn)假設(shè)郵件服務(wù)器B使用的郵件目錄指出了該用戶e1的適當(dāng)?shù)泥]件服務(wù)器,即郵件服務(wù)器E 20.5。該重新提交的報(bào)文所受到的處理方式與原始報(bào)文的相同,并且將最終通過(guò)QM_7 21.7和郵件服務(wù)器E 20.5投遞到用戶e1的郵箱中。
隊(duì)列管理器QM_4 21.4根據(jù)從QM_3 21.3獲得的等于QSL(QM_4)的隊(duì)列清單QL執(zhí)行如圖6所示的投遞/重新路由選擇功能。QL=QSL(QM_4)的第一個(gè)條目(參見(jiàn)圖8G)包括隊(duì)列管理器名QM_5。隊(duì)列管理器QM_4 21.4確定QM_5 21.5是通向QM_5 21.5的下一(并且是最后)跳躍隊(duì)列管理器。它初始化一個(gè)隊(duì)列子清單QSL(QM_5)并且將QL=QSL(QM_4)的第一個(gè)條目加入到這一隊(duì)列子清單中。QL=QSL(QM_4)的第二條目包括該隊(duì)列管理器名QM_6。隊(duì)列管理器QM_421.4確定QM_6 21.6是通向QM_6 21.6的下一(并且是最后)跳躍隊(duì)列管理器。它初始化一個(gè)隊(duì)列子清單QSL(QM_6)并且將QL=QSL(QM_4)的第二個(gè)條目加入到這一隊(duì)列子清單中。圖8G示出了所得到的隊(duì)列子清單。然后隊(duì)列管理器QM_4 21.4分別將該MQ報(bào)文以及隊(duì)列清單QL=QSL(QM_5)和QL=QSL(QM_6)轉(zhuǎn)發(fā)到QM_5 21.5和QM_621.6。
隊(duì)列管理器QM_5 21.5根據(jù)從QM_4 21.4獲得的等于QSL(QM_5)的隊(duì)列清單QL執(zhí)行如圖6所示的投遞/重新路由選擇功能。QL=QSL(QM_5)的第一個(gè)和唯一的條目(參見(jiàn)圖8G)包括等于其自身名QM_5的隊(duì)列管理器名。相應(yīng)地,隊(duì)列管理器QM_5 21.6將MQ報(bào)文分發(fā)到本地隊(duì)列Q_MSC 22.3。
隊(duì)列管理器QM_6 21.6根據(jù)從QM_4 21.4獲得的等于QSL(QM_6)的隊(duì)列清單QL執(zhí)行如圖6所示的投遞/重新路由選擇功能。QL=QSL(QM_6)的第一個(gè)和唯一的條目(參見(jiàn)圖8G)包括等于其自身名QM_6的隊(duì)列管理器名。相應(yīng)地,隊(duì)列管理器QM_6 21.6將MQ報(bào)文分發(fā)到本地隊(duì)列Q_MSD 22.4。
郵件服務(wù)器C 20.3從Q_MSC 22.3中取出MQ報(bào)文,從中提取郵件報(bào)文和郵件服務(wù)器表。然后,郵件服務(wù)器C 20.3按附圖7的方法執(zhí)行郵件投遞/重定向功能。郵件服務(wù)器C 20.3從郵件服務(wù)器表MST中取出條目,依次對(duì)所列各收件人進(jìn)行處理。此時(shí)它確定只有收件人c1是本地用戶,就將郵件報(bào)文投遞到該用戶的郵箱。
郵件服務(wù)器D 20.4從Q_MSD 22.4中取出MQ報(bào)文,從中提取郵件報(bào)文和郵件服務(wù)器表。然后,郵件服務(wù)器D 20.4按附圖7的方法執(zhí)行郵件投遞/重定向功能。郵件服務(wù)器D 20.4從郵件服務(wù)器表MST中取出條目,依次對(duì)所列各收件人進(jìn)行處理。此時(shí)它確定只有收件人d2是本地用戶,就將郵件報(bào)文投遞到該用戶的郵箱。
讀者應(yīng)該明白,上述例子以及圖中的各種清單、表格是可以改變的。此外,有些過(guò)程步驟可以并行執(zhí)行,以加快整個(gè)過(guò)程的速度。清單、表格的內(nèi)容也有各種不同排列方法。除了產(chǎn)生新的隊(duì)列子清單外,也可以用設(shè)置標(biāo)志的方法區(qū)別隊(duì)列清單中已處理的數(shù)據(jù)與尚未處理的數(shù)據(jù)。另一個(gè)重要之點(diǎn)是,附圖2的不同的郵箱未必實(shí)現(xiàn)為不同的硬件單元不可。例如,只要安裝適當(dāng)?shù)挠布蛙浖?,就可以用一個(gè)用戶計(jì)算機(jī)同時(shí)作為郵件服務(wù)器和隊(duì)列管理器。除了用附圖3和附圖8所示的清單、表格之外,也可以按順序安排數(shù)據(jù)。附圖9給出了一個(gè)順序排列的郵件服務(wù)器表的例子。這種順序排列的郵件服務(wù)器表例如可以插在郵件報(bào)文的報(bào)文標(biāo)題中,與郵件報(bào)文一起在網(wǎng)絡(luò)上傳輸。
總而言之,本發(fā)明滿足了MQ網(wǎng)絡(luò)為郵件系統(tǒng)提供有效分配服務(wù)應(yīng)具有的三個(gè)關(guān)鍵條件·在MQ網(wǎng)絡(luò)中無(wú)需對(duì)郵件報(bào)文的不必要復(fù)制,就能向分配表中所有收件人投遞郵件報(bào)文。
·使郵件系統(tǒng)僅僅在適當(dāng)時(shí)才對(duì)郵件報(bào)文進(jìn)行重定向·不需要郵件與MQ系統(tǒng)之間的協(xié)調(diào)。
權(quán)利要求
1.從一個(gè)第一用戶(a1)通過(guò)網(wǎng)絡(luò)向目的地用戶(b1、e1)傳輸報(bào)文的方法,其中各用戶(a1、b1、e1)分別被分派給一個(gè)郵件服務(wù)器(20.1、20.2、20.5),該郵件服務(wù)器與所述網(wǎng)絡(luò)的連接方式,使得可以通過(guò)隊(duì)列管理器(21.1、21.2、21.7)到達(dá)該郵件服務(wù)器;該方法包括以下步驟1.為分派給所述第一用戶(a1)的郵件服務(wù)器(20.1)在所述網(wǎng)絡(luò)上向分派到所述目的地用戶(b1、e1)的郵件服務(wù)器(20.2、20.5)提交的所述報(bào)文準(zhǔn)備尋址信息;2.將所述尋址信息和郵件報(bào)文封裝成一份MQ報(bào)文;3.創(chuàng)建一個(gè)隊(duì)列清單(QL),該QL要含有通過(guò)其可以到達(dá)所述郵件服務(wù)器(20.2、20.5)的那些隊(duì)列管理器(21.3、21.7)的MQ地址;4.由所述隊(duì)列清單(QL)確定下一跳躍隊(duì)列管理器組、并生成相關(guān)聯(lián)的隊(duì)列子清單(QSL);以及5.將所述MQ報(bào)文連同一個(gè)隊(duì)列清單(QL)路由選擇到所述各下一跳躍隊(duì)列管理器,其中隊(duì)列清單(QL)的內(nèi)容和與各下一跳躍隊(duì)列管理器所關(guān)聯(lián)的隊(duì)列子清單(QSL)內(nèi)容相同,結(jié)果使所述各下一跳躍隊(duì)列管理器變成執(zhí)行隊(duì)列管理器,對(duì)于每個(gè)執(zhí)行隊(duì)列管理器來(lái)說(shuō),1)如果所述隊(duì)列管理器就是所述隊(duì)列清單(QL)中的隊(duì)列管理器,它就從所述隊(duì)列清單(QL)中取得本地隊(duì)列名,將所述報(bào)文投遞給收件人;2)重復(fù)步驟4和5,直到所述報(bào)文被置入所述隊(duì)列清單(QL)中的所有隊(duì)列中,6.從所述隊(duì)列清單中的所述隊(duì)列中取出所述MQ報(bào)文和尋址信息;7.根據(jù)所述尋址信息,確定分派到該郵件服務(wù)器的目的地用戶組,1)如果所述被分派到的目的地用戶就是所述郵件服務(wù)器的本地用戶,所述郵件服務(wù)器就將所述報(bào)文投遞給所述目的地用戶;2)對(duì)非本地的其它目的地用戶子集,重復(fù)步驟1~7,直到所述報(bào)文被投遞到所有目的地用戶。
2.權(quán)利要求1的方法,其中,所述第一用戶(a1)通過(guò)生成一個(gè)收件人清單(RL)來(lái)標(biāo)識(shí)所述目的地用戶(b1、e1),收件人清單中每個(gè)目的地用戶(b1、e1)都有唯一的標(biāo)識(shí)符。
3.權(quán)利要求2的方法,其中,分配給所述第一用戶(a1)的郵件服務(wù)器在接收到所述郵件報(bào)文及關(guān)聯(lián)收件人清單(RL)時(shí),執(zhí)行以下步驟1.向所述收件人清單(RL)中與所述第一用戶(a1)有同一郵件服務(wù)器的目的地用戶投遞所述報(bào)文;2.準(zhǔn)備從分派給所述第一用戶(a1)的郵件服務(wù)器(20.1)在所述網(wǎng)絡(luò)上向所述收件人清單(RL)中到與分派給所述第一用戶(a1)的所述郵件服務(wù)器不同的郵件服務(wù)器的目的地用戶提交的尋址信息和所述報(bào)文。
4.權(quán)利要求1的方法,其中,所述隊(duì)列管理器通過(guò)執(zhí)行以下步驟,執(zhí)行所述MQ報(bào)文投遞/重新路由選擇功能1.從與所述MQ報(bào)文關(guān)聯(lián)的所述隊(duì)列清單(QL)中取出一條目,確定該條目中的隊(duì)列管理器名稱;2.如果所述隊(duì)列管理器名稱是本地的,讀該條目的各隊(duì)列名稱,并將所述報(bào)文投遞到帶有該名稱的隊(duì)列;3.如果所述隊(duì)列管理器名稱不是本地的,確定下一跳躍隊(duì)列管理器,即下一個(gè)執(zhí)行隊(duì)列管理器的隊(duì)列管理器,1)如果所述下一跳躍隊(duì)列管理器還沒(méi)有隊(duì)列子清單(QSL),為其創(chuàng)建一個(gè)新的隊(duì)列子清單(QSL),2)將所述條目添入各個(gè)下一跳躍隊(duì)列管理器的隊(duì)列子清單;4.重復(fù)步驟1~3,直到處理完所述隊(duì)列清單中的所有條目;5.取出一個(gè)下一跳躍隊(duì)列管理器的所述隊(duì)列子清單(QSL),為所述MQ報(bào)文和變?yōu)樗鯩Q報(bào)文的關(guān)聯(lián)隊(duì)列清單(QL)的所述隊(duì)列子清單(QSL)重新路由選擇到所述下一跳躍隊(duì)列管理器;6.重復(fù)步驟5,直到處理完所有隊(duì)列子清單(QSL)。
5.權(quán)利要求1的方法,其中,通過(guò)為各條目加標(biāo)志,對(duì)所述隊(duì)列清單(QL)中已經(jīng)處理的條目與尚未處理的條目相區(qū)別。
6.權(quán)利要求1的方法,其中,通過(guò)刪除已被處理的所述數(shù)據(jù),對(duì)所述隊(duì)列清單(QL)中已經(jīng)處理的條目與尚未處理的條目相區(qū)別。
7.權(quán)利要求1的方法,其中,通過(guò)在郵件目錄中查閱各自數(shù)據(jù),確定哪些目的地用戶(b1、e1)被分派給哪些郵件服務(wù)器(20.2、20.5),其中郵件目錄中每個(gè)郵件服務(wù)器(20.2、20.5)都對(duì)應(yīng)有唯一的標(biāo)識(shí)符。
8.權(quán)利要求2的方法,其中,分派給所述第一用戶(a1)的郵件服務(wù)器(20.1)以所述收件人清單(RL)作為輸入創(chuàng)建郵件服務(wù)器表(MST)時(shí),執(zhí)行以下步驟1.從所述收件人清單(RL)中取出對(duì)應(yīng)于一個(gè)目的地用戶(b1、e1)的數(shù)據(jù);2.從郵件目錄中獲得分派給所述目的地用戶(b1、e1)的郵件服務(wù)器(MSB)的標(biāo)識(shí)符;3.將所述目的地用戶(b1)的名稱和所獲得的郵件服務(wù)器(MSB)的標(biāo)識(shí)符添加到一個(gè)遠(yuǎn)程收件人表(RRT)中;4.重復(fù)上述三個(gè)步驟,直到處理完所述收件人清單(RL)中的所有目的地用戶(b1、e1);5.通過(guò)將所述遠(yuǎn)程收件人表(RRT)進(jìn)行翻轉(zhuǎn),創(chuàng)建所述郵件服務(wù)器(MST)。
9.權(quán)利要求8的方法,其中,一個(gè)特定郵件服務(wù)器通過(guò)執(zhí)行以下步驟,執(zhí)行對(duì)所述報(bào)文投遞/重新路由選擇的功能1.從所述郵件服務(wù)器(MST)或遠(yuǎn)程收件人表(RRT)中判定分派給該特定郵件服務(wù)器的目的地用戶組;2.從被分派的目的地用戶組中讀取目的地用戶的數(shù)據(jù);3.如果所述目的地用戶是本地的,就將所述報(bào)文投遞給所述目的地用戶;4.如果所述目的地用戶不是本地的,1)如果收件人清單不存在就創(chuàng)建新的收件人清單,2)將所述目的地用戶添入所述新的收件人清單;5.重復(fù)2~4步驟,直到處理完所述被分派的目的地用戶組中的所有目的地用戶;6.準(zhǔn)備要向?yàn)樗鍪占饲鍐?RL)中所述目的地用戶傳輸數(shù)據(jù)的所述網(wǎng)絡(luò)提交的尋址信息和所述報(bào)文。
10.權(quán)利要求9的方法,其中,所述特定郵件服務(wù)器通過(guò)執(zhí)行以下步驟,將封裝在一個(gè)MQ報(bào)文中的所述報(bào)文和尋址信息,提交給負(fù)責(zé)為所述郵件服務(wù)器將其通過(guò)所述MQ網(wǎng)絡(luò)傳輸?shù)剿鍪占饲鍐?RL)中所述目的地用戶的隊(duì)列管理器1.根據(jù)與所述報(bào)文關(guān)聯(lián)的所述收件人清單(RL)創(chuàng)建一個(gè)遠(yuǎn)程收件人表(RRT);2.根據(jù)所述遠(yuǎn)程收件人表(RRT)創(chuàng)建一個(gè)郵件服務(wù)器表(MST);3.根據(jù)所述遠(yuǎn)程收件人表(RRT)創(chuàng)建一個(gè)隊(duì)列清單(QL);4.將所述報(bào)文與所述郵件服務(wù)器表(MST)或所述遠(yuǎn)程收件人表(RRT)封裝成一個(gè)MQ報(bào)文;5.將所述MQ報(bào)文連同所述關(guān)聯(lián)隊(duì)列清單(QL)提交給所述負(fù)責(zé)隊(duì)列管理器。
11.權(quán)利要求10的方法,其中,所述郵件服務(wù)器通過(guò)執(zhí)行以下步驟,以所述收件人清單(RL)作為輸入創(chuàng)建一個(gè)遠(yuǎn)程收件人表(RRT)1.從所述收件人清單(RL)中取出對(duì)應(yīng)于一個(gè)遠(yuǎn)程目的地用戶的數(shù)據(jù);2.從郵件目錄中取得所述遠(yuǎn)程目的地用戶被分派到的郵件服務(wù)器的標(biāo)識(shí)符;3.將所述遠(yuǎn)程目的地用戶的名稱和所述郵件服務(wù)器標(biāo)識(shí)符添加到所述遠(yuǎn)程收件人表(RRT);4.重復(fù)1~3步驟,直到處理完所述收件人清單(RL)中的所有遠(yuǎn)程目的地用戶。
12.權(quán)利要求11的方法,其中,所述郵件服務(wù)器通過(guò)執(zhí)行以下步驟,由所述遠(yuǎn)程收件人表(RRT)創(chuàng)建一個(gè)隊(duì)列清單(QL)1.從所述遠(yuǎn)程收件人表中取出條目e,提取該條目中的郵件服務(wù)器標(biāo)識(shí)符;2.從所述MQ目錄中取得MQ地址,即所述郵件服務(wù)器被分派到的隊(duì)列的名稱以及擁有所述隊(duì)列的隊(duì)列管理器的名稱;3.將所述MQ地址添加到所述隊(duì)列清單(QL);4.重復(fù)上述步驟1,如果由此獲得的所述郵件服務(wù)器標(biāo)識(shí)符與此前所有的郵件服務(wù)器標(biāo)識(shí)符不同,就再重復(fù)上述步驟2;5.重復(fù)步驟4,直到處理完遠(yuǎn)程收件人表中所有條目。
13.從一個(gè)第一用戶(a1)向目的地用戶(b1、e1)傳輸報(bào)文的網(wǎng)絡(luò),其中各用戶(a1、b1、e1)分別被分派給一個(gè)郵件服務(wù)器(20.1、20.2、20.5),所述郵件服務(wù)器與網(wǎng)絡(luò)的連接方式,使得可以通過(guò)隊(duì)列管理器(21.1、21.2、21.7)到達(dá)郵件服務(wù)器;該網(wǎng)絡(luò)包括1.為所述報(bào)文準(zhǔn)備尋址信息的裝置,其中該報(bào)文要從分派給所述第一用戶(a1)的郵件服務(wù)器(20.1)通過(guò)所述網(wǎng)絡(luò)向分派到所述目的地用戶(b1、e1)的郵件服務(wù)器(20.2、20.5)提交;2.將所述尋址信息和郵件報(bào)文封裝成一份MQ報(bào)文的裝置;3.創(chuàng)建隊(duì)列清單(QL)的裝置,該QL包含有通過(guò)其可以到達(dá)所述郵件服務(wù)器的那些隊(duì)列管理器的MQ地址;4.由所述隊(duì)列清單(QL)確定下一跳躍隊(duì)列管理器組、并生成相關(guān)聯(lián)的隊(duì)列子清單(QSL)的裝置;5.路由選擇裝置,它將所述MQ報(bào)文連同一個(gè)隊(duì)列清單(QL)路由選擇到所述各下一跳躍隊(duì)列管理器,其中隊(duì)列清單(QL)的內(nèi)容和與各下一跳躍隊(duì)列管理器關(guān)聯(lián)的隊(duì)列子清單(QSL)內(nèi)容相同,結(jié)果使所述各下一跳躍隊(duì)列管理器變成執(zhí)行隊(duì)列管理器;6.報(bào)文排隊(duì)裝置,如果在所述隊(duì)列清單(QL)中發(fā)現(xiàn)一個(gè)隊(duì)列管理器是所述執(zhí)行隊(duì)列管理器,該裝置就將所述報(bào)文放入所述執(zhí)行隊(duì)列管理器的隊(duì)列中;7.重復(fù)執(zhí)行裝置,其重復(fù)由路由選擇裝置和報(bào)文排隊(duì)裝置執(zhí)行的步驟,直到將所述報(bào)文放入所述隊(duì)列清單(QL)中所有隊(duì)列中為止;8.從所述隊(duì)列清單中的所述隊(duì)列中取出所述MQ報(bào)文和尋址信息裝置;9.用戶確定裝置,根據(jù)所述尋址信息,確定該郵件服務(wù)器被分派到的目的地用戶組,1)如果所述被分派到所述郵件服務(wù)器的目的地用戶是本地的,所述郵件服務(wù)器就將所述報(bào)文投遞給所述目的地用戶;2)對(duì)非本地的其它目的地用戶子集,重復(fù)執(zhí)行先前裝置執(zhí)行的步驟1~7,直到所述報(bào)文被投遞到所有目的地用戶。
14.權(quán)利要求13的網(wǎng)絡(luò),其中,所述創(chuàng)建隊(duì)列子清單的裝置通過(guò)對(duì)各條目作標(biāo)記,區(qū)別所述隊(duì)列清單中已經(jīng)處理的條目和尚未處理的條目。
15.權(quán)利要求13的網(wǎng)絡(luò),其中,所述分配給所述第一用戶(a1)的所述郵件服務(wù)器包括以下在接收到所述郵件報(bào)文和用于標(biāo)識(shí)所有目的地用戶的關(guān)聯(lián)收件人清單(RL)時(shí)所使用的裝置1.向所述收件人清單(RL)中與所述第一用戶(a1)分配給同一郵件服務(wù)器的目的地用戶投遞所述報(bào)文的裝置;2.準(zhǔn)備從分派給所述第一用戶(a1)的郵件服務(wù)器(20.1)在所述網(wǎng)絡(luò)上向所述收件人清單(RL)中到與分派給所述第一用戶(a1)的所述郵件服務(wù)器不同的郵件服務(wù)器的目的地用戶提交的尋址信息和所述報(bào)文的裝置。
16.權(quán)利要求13的網(wǎng)絡(luò),其中,所述隊(duì)列管理器通過(guò)使用以下裝置,執(zhí)行所述MQ報(bào)文投遞/重新路由選擇功能1.從與所述MQ報(bào)文關(guān)聯(lián)的隊(duì)列清單(QL)中取出一條目、并確定該條目中的隊(duì)列管理器名稱的裝置;2.在所述隊(duì)列管理器名稱是本地的情況下,讀取該條目中的各隊(duì)列名稱、并將所述報(bào)文投遞到帶有該名稱的隊(duì)列的裝置;3.下一跳躍隊(duì)列管理器確定裝置,當(dāng)所述隊(duì)列管理器名稱不是本地的時(shí),該裝置確定下一跳躍隊(duì)列管理器,即成為下一個(gè)執(zhí)行隊(duì)列管理器的隊(duì)列管理器,1)為沒(méi)有隊(duì)列子清單(QSL)的所述下一跳躍隊(duì)列管理器創(chuàng)建新的隊(duì)列子清單(QSL)的裝置,2)將所述條目添入各個(gè)下一跳躍隊(duì)列管理器的隊(duì)列子清單(QSL)的裝置;4.重復(fù)執(zhí)行裝置,它重復(fù)執(zhí)行所述提取隊(duì)列清單條目提取裝置、所述隊(duì)列名稱讀取裝置、下一跳躍隊(duì)列管理器組確定裝置執(zhí)行的步驟,直到處理完所述隊(duì)列清單中的所有條目;5.隊(duì)列子清單讀取裝置,用于讀取一個(gè)下一跳躍隊(duì)列管理器的所述隊(duì)列子清單(QSL),為所述MQ報(bào)文和變?yōu)樗鯩Q報(bào)文的關(guān)聯(lián)隊(duì)列清單(QL)的所述隊(duì)列子清單(QSL)重新路由選擇到所述下一跳躍隊(duì)列管理器;6.重復(fù)執(zhí)行裝置,用于重復(fù)隊(duì)列子清單讀取裝置執(zhí)行的步驟,直到處理完所有隊(duì)列子清單(QSL)。
17.權(quán)利要求13的網(wǎng)絡(luò),其中,所述創(chuàng)建隊(duì)列子清單的裝置通過(guò)刪除所述隊(duì)列清單(QL)中的所述信息,區(qū)別所述隊(duì)列清單中已經(jīng)處理的條目和尚未處理的條目。
18.權(quán)利要求13的網(wǎng)絡(luò),其中所述第一用戶(a1)中有收件人清單(RL)生成裝置,該裝置生成的RL含有與用來(lái)標(biāo)識(shí)所述目的地用戶(b1、e1)的每一個(gè)目的地用戶關(guān)聯(lián)的尋址信息。
19.權(quán)利要求13的網(wǎng)絡(luò),其中,所述隊(duì)列清單創(chuàng)建裝置通過(guò)在郵件目錄中查閱各自數(shù)據(jù),確定哪些郵件服務(wù)器(20.2、20.5)被分派給所述目的地用戶(b1、e1),其中該郵件目錄中每個(gè)郵件服務(wù)器都對(duì)應(yīng)有唯一的標(biāo)識(shí)符。
20.權(quán)利要求13的網(wǎng)絡(luò),其中,分派給所述第一用戶(a1)的郵件服務(wù)器(20.1)有以下裝置,用于以所述收件人清單(RL)作為輸入創(chuàng)建郵件服務(wù)器表(MST)1.數(shù)據(jù)提取裝置,用于從所述收件人清單(RL)中取出對(duì)應(yīng)于一個(gè)目的地用戶的數(shù)據(jù);2.標(biāo)識(shí)符讀取裝置,用于從郵件目錄中獲得分派給所述目的地用戶的郵件服務(wù)器的標(biāo)識(shí)符;3.名稱、標(biāo)識(shí)符添加裝置,用于將所述目的地用戶(b1)的名稱和所獲得的所述郵件服務(wù)器(MSB)的標(biāo)識(shí)符添加到一個(gè)遠(yuǎn)程收件人表(RRT)中;4.重復(fù)執(zhí)行裝置,用于重復(fù)上述三個(gè)裝置所執(zhí)行的步驟,直到處理完所述收件人清單(RL)中的所有目的地用戶;5.表項(xiàng)翻轉(zhuǎn)裝置,用于通過(guò)將所述遠(yuǎn)程收件人表(RRT)翻轉(zhuǎn),創(chuàng)建所述的郵件服務(wù)器表(MST)。
21.權(quán)利要求13的網(wǎng)絡(luò),其中,一個(gè)特定郵件服務(wù)器包括以下裝置,用于執(zhí)行對(duì)所述報(bào)文的投遞/重新路由選擇1.目的地用戶組確定裝置,用于從所述郵件服務(wù)器表(MST)或遠(yuǎn)程收件人表(RRT)中判定分派給該特定郵件服務(wù)器的目的地用戶組;2.目的地用戶數(shù)據(jù)提取裝置,用于從被分派的目的地用戶組中讀取目的地用戶的數(shù)據(jù);3.投遞裝置,如果所述目的地用戶是本地的,就將所述報(bào)文投遞給所述目的地用戶;4.收件人清單創(chuàng)建/添入裝置,如果所述目的地用戶不是本地的,該裝置就執(zhí)行下述兩個(gè)步驟1)如果收件人清單不存在就創(chuàng)建新的收件人清單,2)將所述目的地用戶添入所述新的收件人清單;5.重復(fù)執(zhí)行裝置,用于重復(fù)所述目的地用戶數(shù)據(jù)提取裝置、投遞所說(shuō)報(bào)文到所述目的地用戶的所述投遞裝置、執(zhí)行上述兩個(gè)步驟的所述收件人清單創(chuàng)建/添入裝置所執(zhí)行的步驟,直到處理完被分派的目的地用戶組中的所有目的地用戶;6.數(shù)據(jù)準(zhǔn)備裝置,用于準(zhǔn)備要向?yàn)樗鍪占饲鍐?RL)中的所述目的地用戶傳輸數(shù)據(jù)的所述網(wǎng)絡(luò)提交的尋址信息和所述報(bào)文。
22.權(quán)利要求21的網(wǎng)絡(luò),其中,所述特定郵件服務(wù)器通過(guò)利用以下裝置,將封裝在一個(gè)MQ報(bào)文中的所述報(bào)文和尋址信息,提交給負(fù)責(zé)為所述郵件服務(wù)器將其通過(guò)所述MQ網(wǎng)絡(luò)傳輸?shù)剿鍪占饲鍐?RL)中所述目的地用戶的隊(duì)列管理器1.根據(jù)與所述報(bào)文關(guān)聯(lián)的所述收件人清單(RL)創(chuàng)建一個(gè)遠(yuǎn)程收件人表(RRT)的裝置;2.根據(jù)所述遠(yuǎn)程收件人表(RRT)創(chuàng)建一個(gè)郵件服務(wù)器表(MST)的裝置;3.根據(jù)所述遠(yuǎn)程收件人表(RRT)創(chuàng)建一個(gè)隊(duì)列清單(QL)的裝置;4.將所述報(bào)文與所述郵件服務(wù)器表(MST)或所述遠(yuǎn)程收件人表(RRT)封裝在一個(gè)MQ報(bào)文的裝置;5.將所述MQ報(bào)文連同所述關(guān)聯(lián)的隊(duì)列清單(QL)提交給所述負(fù)責(zé)隊(duì)列管理器的裝置。
23.權(quán)利要求22的網(wǎng)絡(luò),其中,所述郵件服務(wù)器包括以下裝置,用于以所述收件人清單(RL)作為輸入創(chuàng)建遠(yuǎn)程收件人表(RRT)1.從所述收件人清單(RL)中取出對(duì)應(yīng)于一個(gè)目的地用戶的數(shù)據(jù)的裝置;2.從郵件目錄中取得所述遠(yuǎn)程目的地用戶被分派到的郵件服務(wù)器的標(biāo)識(shí)符的裝置;3.將所述遠(yuǎn)程目的地用戶的名稱和所述郵件服務(wù)器標(biāo)識(shí)符添加到所述遠(yuǎn)程收件人表(RRT)的裝置;4.重復(fù)執(zhí)行裝置,它用于重復(fù)執(zhí)行本項(xiàng)權(quán)利要求中各裝置所執(zhí)行的步驟,直到處理完所述遠(yuǎn)程收件人表(RRT)中的所有遠(yuǎn)程目的地用戶。
24.權(quán)利要求23的網(wǎng)絡(luò),其中,所述郵件服務(wù)器包括以下裝置,用于由所述遠(yuǎn)程收件人表(RRT)創(chuàng)建一個(gè)隊(duì)列清單(QL)1.提取條目裝置,用于從所述遠(yuǎn)程收件人表中取出條目(e)并提取該條目中的郵件服務(wù)器標(biāo)識(shí)符;2.MQ地址提取裝置,用于從所述MQ目錄中取得MQ地址,即所述郵件服務(wù)器被分派到的隊(duì)列的名稱以及擁有所述隊(duì)列的隊(duì)列管理器名稱;3.將所述MQ地址添加到所述隊(duì)列清單(QL)的裝置;4.重復(fù)執(zhí)行裝置,用于重復(fù)執(zhí)行從所述遠(yuǎn)程收件人表提取條目的所述提取條目裝置所執(zhí)行的步驟,如果由此獲得的所述郵件服務(wù)器標(biāo)識(shí)符與此前所有的郵件服務(wù)器標(biāo)識(shí)符不同,就重復(fù)從所述MQ目錄取得MQ地址的所述MQ地址提取裝置執(zhí)行的步驟;5.重復(fù)執(zhí)行裝置,用于重復(fù)執(zhí)行后面的裝置所執(zhí)行的步驟,直到處理完遠(yuǎn)程收件人表中所有條目。
全文摘要
從一個(gè)第一用戶(a1)通過(guò)網(wǎng)絡(luò)向數(shù)個(gè)目的地用戶傳輸報(bào)文的方法,其中各用戶分別被分派給一個(gè)郵件服務(wù)器,郵件服務(wù)器與所述網(wǎng)絡(luò)的連接方式,使得可以通過(guò)隊(duì)列管理器到達(dá)郵件服務(wù)器;該方法包括以下步驟:1.為從分派給所述第一用戶的郵件服務(wù)器在所述網(wǎng)絡(luò)上向分派到所述目的地用戶的郵件服務(wù)器提交的所述報(bào)文準(zhǔn)備尋址信息;2.將所述尋址信息和郵件報(bào)文封裝在一份MQ報(bào)文;3.創(chuàng)建一個(gè)含有通過(guò)其可以到達(dá)所述郵件服務(wù)器的那些隊(duì)列管理器的MQ地址的隊(duì)列清單(QL);4.由所述隊(duì)列清單(QL)確定下一跳躍隊(duì)列管理器組、并生成相關(guān)聯(lián)的隊(duì)列子清單(QSL);5.將所述MQ報(bào)文連同一個(gè)隊(duì)列清單(QL)路由選擇到所述各下一跳躍隊(duì)列管理器,其中隊(duì)列清單(QL)的內(nèi)容同與各下一跳躍隊(duì)列管理器關(guān)聯(lián)的隊(duì)列子清單(QSL)內(nèi)容相同,結(jié)果使所述各下一跳躍隊(duì)列管理器變成執(zhí)行隊(duì)列管理器,對(duì)于每個(gè)執(zhí)行隊(duì)列管理器來(lái)說(shuō),(a)如果所述隊(duì)列管理器就是所述隊(duì)列清單(QL)中的一個(gè)隊(duì)列管理器,它就從所述隊(duì)列清單(QL)中取得本地隊(duì)列名,將所述報(bào)文投遞給它們;(b)重復(fù)步驟4和5,直到所述報(bào)文被置入所述隊(duì)列清單(QL)中的所有隊(duì)列中;6.從所述隊(duì)列清單中的所述隊(duì)列中取出MQ報(bào)文和尋址信息;7.根據(jù)所述尋址信息,確定被分派到該郵件服務(wù)器的目的地用戶組,(a)如果所述被分派到的目的地用戶就是所述郵件服務(wù)器的本地用戶,郵件服務(wù)器就將所述報(bào)文投遞給所述目的地用戶;(b)對(duì)非本地的其它目的地用戶子集,重復(fù)步驟1~7,直到所述報(bào)文被投遞到所有目的地用戶。
文檔編號(hào)H04L12/58GK1197565SQ95197942
公開(kāi)日1998年10月28日 申請(qǐng)日期1995年8月14日 優(yōu)先權(quán)日1995年8月14日
發(fā)明者T·安泰斯, F·B·道利沃, R·赫爾曼, C·帕帕佐普洛斯, R·威廉姆森 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司