專利名稱:用于訂閱匹配的方法和系統的制作方法
技術領域:
本發明涉及數據處理網絡內的通信,并且具體地,涉及實現發布/訂閱通 信范例的裝置、方法和計算機程序。
背景技術:
在消息網絡內,可以通過一個或多個"消息代理"把消息從一個數據處 理系統傳送到另一數據處理系統,該消息代理提供路由,并且在多數情況下, 提供格式化和其他服務。盡管可能在分布式代理網絡內的不同點上實現代理 功能,但是通常,代理位于網絡內的通信集線器上。
很多消息代理支持發布/訂閱通信范例。這包括公布者發送可以被已經登 記了其有興趣接收的通信類型的一組訂戶接收的通信,而通常無須發布需得 知哪些訂戶感興趣的應用程序。發布/訂閱允許訂戶接收感興趣的領域內的最
新信息(例如,股票價格或諸如或新聞動畫或特價之類的事件),而不必搶先 且重復地從各發布者處請求該信息。
典型的發布/訂閱環境具有多個發布者應用程序,這些發布者應用程序通 過代理把消息發送到位于網絡間的遠程計算機上的潛在大量的訂戶應用程 序。訂戶用代理登記并標識他們希望接受的信息的種類,并且該信息被存儲 在代理處。在很多發布/訂閱實現中,訂戶指定代表他們希望接受的信息的一 個或多個主題名稱。發布者把主題名稱分配給他們發送到發布/訂閱代理的消 息,并且代理使用匹配引擎來比較所接收的消息的主題與已登記訂戶組的所 存儲的訂閱信息。該比較確定應該把消息轉發到哪些訂戶。
另 一種已知的發布/訂閱環境在與訂戶應用程序相同的數據處理系統上
實現發布/訂閱匹配引擎。發布者把發布物(publication )發送到該系統,并 且發布/訂閱匹配引擎確定哪些發布物是本地訂戶應用程序感興趣的。在本發 明的上下文中,術語"發布/訂閱代理"想要包括在發布者和訂戶之間的中間 網絡節點處實現的發布/訂閱匹配引擎,該術語還想要包括當在訂戶的數據處 理系統上被實現時的發布/訂閱匹配引擎。
盡管訂閱匹配經常包含檢查所發布的消息的報頭內的主題域,但是匹配 可以另外地或選擇性地包含檢查其他消息報頭域或檢查消息內容并基于附加
信息過濾消息。例如,實現Java,消息服務UMS)的消息代理通常允許基
于消息性質(而不是基于作為消息內容或"有效負載"的應用程序數據)來 過濾。消息代理可以執行附加功能,比如格式化或另外在把所接收的消息轉
發給訂戶之前處理該消息。(Java和基于Java的名稱是Sun Microsystem公司
的商標。)
支持發布/訂閱范例并且支持基于消息性質或消息內容來過濾的消息代 理產品的商業可用示例是如在IBM公司2006年七月的文件"IBM WebSphere Message Broker Version 6 Release O—Introduction"和IBM 2006年七月的 文件"IBM WebSphere Message Broker Version 6 Release 0—Publish7Subscribe" 中所描述的IBM公司的WebSphere消息代理。(IBM和WebSphere是國際商 業機器公司的商標。)
該發布/訂閱范例是把信息散布到多個用戶的有效方式,并且對于那種發 布者和/或訂戶組可能隨時間變化的環境和發布者和/或訂戶的數量可能很大 的環境尤其有用。盡管一些訂閱是"非永久的"(即,僅當訂閱應用程序與代 理連接時才保持激活),但是很多訂閱是"永久的",并且保持激活直到訂閱 應用程序明確地退訂(unsubscribe )。當"永久的"訂戶不再希望接收發布物 時,訂戶可以從代理中退訂(或從特定的主題或主題組中退訂)。
通常分層地指定主題,例如,使用字符串格式"根/主題A/主題X",其 中主題A是在根節點下面的層次的第一級別中的可用主題之一,并且主題X 在主題A下面的層次的第二級別中的可用主題之一,并且"/"字符是層次的 不同級別的主題名稱之間的分隔符。圖l示出簡單的主題樹,其中根節點下 的樹的第一級別具有兩個主題,主題A和主題B,并且在主題A下的樹的第 二級別具有多個主題,主題X、主題Y和主題Z。訂戶SUBSCRIBER1 (圖 l中的SUB.l)已經訂閱了接收主題"根/主題A/主題X"上發布的消息,并 且他們的訂閱與主題樹的各節點有關。依次比較每個所接收的消息內的主題 串的元素與在主題樹的各級別處的節點組,直到標識出與所接收的主題串匹 配的樹節點,或直到確定沒有匹配。當標識了匹配時,把發布物轉發給已經 登記接收關于該主題的發布物的訂戶(經過基于消息性質或已經被指定的在 具體訂閱內的消息內容檢查任意過濾器后)。 這種分層結構允許發布者和訂戶在所發布的消息內和在訂閱請求內非常 精確地指定主題,并且允許使用迭代地移過主題層次的匹配算法來比較在所 接收的消息內的主題串與訂閱的內容。
傳統的分層主題名稱和相應的匹配算法的問題是發布者和訂戶以及發布 /訂閱代理必須都知道主題層次并且必須都使用對于分層主題名稱的一致的 表達。例如,由于在主題層次中優選"漢普郡/天氣,,而不是"天氣/漢普郡,, 不是因為直覺的原因(反之亦然),所以新訂戶必須學會發布者所使用的具體 層次。類似地,新發布者需要與現有訂戶的期望一致,或者新發布者必須向 所有訂戶通知他們的具體主題層次,以便訂戶能夠相應地訂閱。
在過去,對于單個公司內的私有網絡和對于公司間發布/訂閱解決方案來 說,發布者和訂戶已經接受了這種限制,因為這看似對于發布者和訂戶的整 合以及對于有效的發布/訂閱代理操作都是至關重要的。然而,新發布者和訂 戶要實現現有分層主題命名協定的需要可能阻礙新發布者和/或訂戶加入該 發布/訂閱網絡。
通過使用通配符,例如允許訂戶訂閱"天氣/*"(其中是可以取任 意值的通配符)代替不得不分別訂閱"天氣/漢普郡"、"天氣/多塞特,,和"天 氣/薩里"等,實現了一些靈活性,但是,那是探索層次知識的示例,并不能 使用戶避免學習和遵照層次的不便。例如,"英國/天氣/*"的訂閱將不匹配關 于關于"英國/*/天氣"的發布物。
Lepori等人的 "Push communication services: a short history, a concrete experience and some critical reflection" , Studies in Communication Sciences 2/1, 2002, 149-164頁,描述了簡化的可替換的途徑,在其中發布/訂閱網絡中的 發布者把他們的發布物分類,并且訂閱的用戶根據使用布爾(Boolean)匹配 的簡單的關鍵詞方案指定他們的興趣。然而,由Lepori等人提出的簡單的關 鍵詞組對于在很多發布/訂閱系統中所出現的大量不同的主題來說是不夠精 細的(granular)。可以預期指定大量關鍵詞的典型訂戶將接收到過多部分的 所發布的消息。例如,使用布爾操作"OR"("英國"OR "漢普郡"OR "天 氣")指定一組關鍵詞的訂戶可以預期將收到關于其他國家的天氣信息以及關 于主題"英國"的所有所發布的信息和關于主題"漢普郡,,的所有信息。為 了減少他們接收的發布物的數量,訂戶可以使用布爾操作符AND,不過指定 ("英國"AND "天氣"AND "漢普郡")的訂閱將錯過具有主題("英國"、
"天氣,,)的發布物。即使使用理解力好的關鍵詞匹配算法,充分廣泛定義了 其訂閱以捕獲所有期望的發布物的訂戶很有可能還會收到大量不需要的發布 物。
因此,使用布爾匹配的關鍵詞方案不是很適合于需要接收所有相關商業 重要發布物的訂戶,也不適合于不希望負擔大量不相關發布物的訂戶。為了
解決這些問題,Lepori等人的相關技術讀者將回到更加精細和精確(和限制) 的分層主題命名方案。
發明內容
提供了用于在發布/訂閱通信網絡中的靈活的主題標識的方法、裝置和計 算機程序。發布者和訂戶能夠指定他們關于在訂閱匹配期間將由發布/訂閱代 理使用的主題分類方案的意圖,并且代理響應于發布者和訂戶之一或兩者所 指定的意圖而調用各自的訂閱匹配組件。所調用的匹配組件每個實現與所指 定的主題分類方案一致的訂閱匹配處理。
本發明的第一方面提供了一種用于從至少一個發布者處接收發布物并將 發布物轉發給已經登記了對接收發布物的興趣的訂戶的發布/訂閱代理。該發 布/訂閱代理包括用于比較在所接收的發布物內的主題標識符與在被存儲在 所述發布/訂閱代理中的訂閱內的主題標識符以確定應該把所述發布物轉發 給哪些訂戶的裝置;其中,所述用于比較的裝置包括一組訂閱匹配組件和用 于選擇所述一組訂閱匹配組件中的至少一個的裝置,其中,所述用于選擇的 裝置響應于指定所要求的主題分類方案的訂戶或發布者中的至少一個。
本發明的第二方面提供了用于發布/訂閱數據處理系統中的訂閱匹配的 方法,其中,所述訂閱匹配包括比較所接收的發布物內的主題標識符與訂戶 的所存儲的訂閱內的主題標識符,以確定是否應該把所接收的發布物轉發給 訂戶,該方法包括步驟
從訂閱中確定各自的訂戶希望訂閱匹配來實現第 一主題分類方案還是第 二主題分類方案;以及
響應于所述確定步驟,調用訂閱匹配組件來進行實現所述第一主題分類 方案和第二主題分類方案中相應一個的訂閱匹配處理。
在第一實施例中,發布者指定的主題分類方案是分層的主題分類方案, 并且第二主題分類方案是非分層的關鍵詞分類方案。以這種方式,如果發布
者指定分層的主題串,那么訂戶可以決定是否使用對應于該發布者的主題層 次的主題串或使用作為獨立關鍵詞的主題串元素來指定他們感興趣的主題。 然后,發布/訂閱代理依照每個訂戶的決定實現不同的訂閱匹配處理。
在本發明的一個實施例中,當發布者第一次與發布/訂閱代理連接時,發 布者向發布/訂閱代理通知他們的主題分類方案。然后,代理保留各個發布者 的方案信息。在另一實施例中,發布者指定在各個發布物內他們的主題分類 方案,或者發布者可以指定用于找到他們的方案的信息。在后一示例中,發
布物可以包括由代理使用以在需要時訪問XML方案信息的統一資源標識符 (URI )。
當訂戶指示他們的訂閱想要反映發布者指定的方案時,代理調用對該方 案特定的訂閱匹配組件。例如,如果訂閱指示想要考慮由發布者指定的主題 層次,那么代理調用匹配算法,其比較所接收的發布物與分層主題樹以標識 相關訂閱——逐級迭代地匹配分層主題串的元素。僅在發布物和訂閱包括相 同的分層主題串(經過通配符和過濾器,如上所述)的條件下,匹配算法才 標識匹配。然而,如果訂戶指示想要把各自的訂閱內的主題名稱元素解釋為 一組獨立的關鍵詞,那么代理調用實現基于關鍵詞的比較的合適的訂閱匹配 組件。
這給訂戶關于他們希望接收哪些發布物的相當大的靈活性,包括是否限 于包括關于明確主題串的發布物或是否接收關于訂戶感興趣的指定的主題組 的所有發布物。代理能夠通過選擇合適的訂閱匹配處理來響應訂戶的要求。
在一個實施例中,單個訂戶可以指定不止一個主題串,想要將第一串與 來自實現第一分類方案的第一組發布者的在代理處接收的發布物比較,而將 第二串與來自實現第二分類方案的第二組發布者的發布物比較。
類似地,發布者可以指定不止一種格式的信息,用于通過與不同的訂閱 相關的不同的匹配算法來處理。例如,發布物可以包括在其中可以指定分層 主題串的主題域,以及在其中可以指定一組一個或多個標簽或關鍵詞的標簽 域。這允許單個發布物包括用于與不同的訂閱方案比較的合適的格式的信息。
加入發布/訂閱網絡的新訂戶可以使用一組獨立關鍵詞(例如,指定布爾 OR操作或使用逗號分隔符的邏輯等效物)初始地訂閱以接收關于大量感興趣 的籠統主題的發布物。代理比較每個關鍵詞與已發布的消息,并且把與任意 關鍵詞匹配的信息發送到訂戶。然后,訂戶可以通過從所接收的組中選擇最
感興趣的發布物,并且選擇這些感興趣的發布物的主題串用在所精選的訂閱 或訂閱組中來精選他們的訂閱。例如,所精選的訂閱組可以包括從被訂戶標 識為特別有幫助的發布物中提取的 一組分層的主題串。現有技術解決方案中 沒有提供這種訂戶能在不同的主題分類方案間切換的能力。
以類似的方式,依賴于分層主題串來接收發布物的第 一子集的現有訂戶 可能希望定期檢查發布/訂閱網絡以便找到感興趣的其他發布物。這可以通過 定期把他們的訂閱切換成較少受限的主題分類方案來實現。如果更廣范圍的 訂閱標識了附加的感興趣的發布物,那么可以提取在這些附加發布物內的主 題串并將其用來創建包括分層主題串的新訂閱。
上述示例示出本發明提供了相當大的靈活性一一在可以被滿足的主題分 類方案方面,以及在可以如何表達和解釋發布者和訂戶的意圖方面。
本發明的另 一 方面提供了 一種在發布/訂閱通信網絡中使用的數據處理系統,所述系統包括
用于從一個或多個發布者處接收發布物的裝置;
用于把發布物發送到一個或多個訂戶的裝置;以及
發布/訂閱代理,用于比較在所接收的發布物內的主題標識符與在被存儲 在發布/訂閱代理中的訂閱內的主題標識符,以確定應該把哪些發布物發送給 哪些訂戶;
其中,所述發布/訂閱代理包括至少兩個訂閱匹配組件和用于從訂閱中確 定各個訂戶想要代理的訂閱匹配來實現第一發布者指定的主題分類方案還是 第二主題分類方案;以及
其中,所述發布/訂閱代理響應于所述確定步驟來調用訂閱匹配組件,以 進行實現第一主題分類方案和第二主題分類方案中相應一個的訂閱匹配處 理。
本發明的另 一方面提供了 一種在發布/訂閱通信網絡中使用的數據處理 系統,所述系統包括數據處理單元;數據存儲單元;網絡通信接口;以及 發布/訂閱代理,用于從至少一個發布者處接收發布物并將發布物轉發給已經 登記了對接收發布物的興趣的訂戶,其中,所述發布/訂閱代理包括用于比 較在所接收的發布物內的主題標識符與在被存儲在所述發布/訂閱代理中的 訂閱內的主題標識符以確定應該把所述發布物轉發給哪些訂戶的裝置;其中, 所述用于比較的裝置包括一組訂閱匹配組件和用于選擇所述一組訂閱匹配組件中的至少一個的裝置,其中,所述用于選擇的裝置響應于指定所要求的主 題分類方案的訂戶或發布者中的至少一個。
可以以計算機程序代碼實現本發明的實施例,并且可以使其作為程序產 品可用,該程序產品包括被記錄在記錄介質上用于控制在其上執行該程序代 碼的數據處理裝置的操作的程序代碼。
下面,以示例的方式,參考附圖更詳細地描述本發明的實施例,在附圖
中
圖1是諸如在本技術領域中已知的、簡單主題層次的示意表示; 圖2是諸如在本技術領域中已知的、在其中可以實現本發明的發布/訂閱 網絡的示意表示;
圖3是根據本發明的實施例的示例消息結構的示意表示;
圖4是根據本發明的實施例的發布/訂閱代理的組件的示意表示;以及
圖5是表示根據本發明的實施例的訂閱匹配方法的示意流程圖。
具體實施例方式
下面更詳細地描述本發明的多個實施例,以進一步理解本發明和其優勢 以及可能的實現。本發明不限于這些圖示的實施例。所描述的實施例包括用 于在發布/訂閱通信環境下的訂閱匹配的方法、裝置和計算機程序。激活和/ 或停用(deactivation)事件與訂閱關聯,并被用于控制何時激活訂閱。避免 傳統的訂閱匹配用于不活動的訂閱。
圖2示出在其中可以實現本發明的簡單的發布/訂閱消息網絡。這種網絡 在本技術領域中是已知的。運行在各自的數據處理系統30、 40上的一組發布 者10、 20可以能夠通過發布者把消息發送到中間發布/訂閱消息代理50來發 布可以^皮多個訂戶90、 100、 110接收的消息。發布者和訂戶不需要在他們之 間直接連接并且不需要彼此的地址信息。而是,發布者把消息發送到代理50, 該消息包括諸如他們所發布的消息內的消息主題之類的信息。在該示例中, 發布者10、 20是依賴下面的消息基礎結構產品150、 160的消息傳送功能的 應用程序,其中產品150、 160保存網絡地址和用于代理50的其他通信信息。
在該示例中,在與發布者系統30、 40分離并且與訂戶的系統120、 130、 140分離的數據處理系統60上實現消息代理。該消息代理包括訂閱匹配引擎 70和相關聯的所存儲的訂閱列表80。訂戶向代理50登記并且比如通過指定 一個具體的消息主題或多個主題,來指示他們對具體信息的興趣。把訂戶的
要求存儲在代理處。在一個實施例中,代理還可以存儲用于各個訂戶系統的 網絡地址和協議,并且代理可以發起連接;但是,在優選實施例中,代理僅 存儲了訂戶系統和他們的訂閱的名稱,并且把網絡和通信信息保存在訂戶的 系統處,并且在訂戶發起與代理的連接時使用該信息。
代理50中的訂閱匹配引擎70依次比較所接收的發布物與所存儲的訂閱, 以確定哪些所接收的發布物與哪些訂戶的要求匹配,并且代理把發布物轉發 給感興趣的訂戶。雖然圖1中僅示出了很少的發布者和訂戶,但是網絡內可 能有很多發布者和很多訂戶,并且發布/訂閱代理可能是分布式代理網絡的一 部分。
出于成本原因并且為了促進正在進行的開發,普遍以計算機程序代碼實 現發布/訂閱匹配引擎。通常,可以以計算機程序代碼實現包括所描述的發布 /訂閱代理、發布者應用程序和訂戶應用程序的本發明的各種元素。可以以諸 如C++、 JavaTM或SmallTalk之類的面向對象的編程語言或以諸如C編程語言 的過程編程語言來寫出該代碼。可以在通用計算機上或在專門的數據處理裝 置上執行這些程序代碼組件。如下面所詳細確認的,可以全部在單個數據處 理設備上執行實現一些特性和本發明的方面的程序代碼,或可以將其分布在 諸如局域網(LAN)、廣域網(WAN)、或因特網之類的數據處理網絡內的多 個數據處理系統之間。在這種網絡內的不同系統和設備間的連接可以是有線 的或者無線的,并且不限于任何具體通信協議或數據格式,并且這種網絡中 的數據處理系統可以是異構的系統。
在很多情況下,將在高容量、高性能、與網絡連接的數據處理系統上實 現發布/訂閱代理-因為這種系統可以維持用于大量發布者和訂戶的高性能發 布物的發布量。發布/訂閱代理可以是邊緣服務器的組件(即,代理可以是一 組網絡服務器或應用程序服務器組件之一)或網關設備。然而,近些年來已 經開發出具有小代碼印跡的"微代理"解決方案,并且已經將其用于例如遠 程遙測應用中,所以現在真實地說,在任意一個寬范圍的數據處理系統和設 備上都可以實現發布者、訂戶和發布/訂閱代理。因此可以在包括無線連接的 PDA、移動電話和自動傳感器設備的網絡中以及包括復雜的并且高性能的計
算機系統的網絡中實現本發明。
對于本領域的技術人員來說將很清楚,可以以軟件或以硬件(例如,使 用電子邏輯電路)實現分布式發布/訂閱通信網絡的各種組件。例如,可以通 過硬件比較器實現發布/訂閱匹配引擎70,該比較器比較所發布的消息內的主 題名稱與所存儲的訂閱內的主題名稱。然后,在電子電路內處理指示匹配或 缺乏匹配的比較器的輸出信號,以控制是否把消息轉發給具體訂戶。可以通 過電子過濾器實現通過某些發布/訂閱匹配引擎所實現的過濾步驟一一尤其 是,在施加過濾器在其上的數據值作為信號振幅來表示的情況。
如上所釋,本發明適用于依賴位于中心的代理(如圖1所示)或分布式 代理網絡的發布/訂閱通信環境。本發明提供了管理多個訂戶的訂閱的發布/ 訂閱代理的具體優勢,但是,本發明還適用于在其中發布/訂閱代理包括在每 個訂戶系統中被復制的發布/訂閱匹配引擎功能性的環境。
因此,很清楚本發明適用于寬范圍的操作環境,并且可以使用硬件和軟 件的各種組合來實現本發明。在每種情況下,在發布/訂閱通信網絡內,本發
明提供了發布者和/或訂戶對主題的指定中的增加的靈活性和發布/訂閱代理 的訂閱匹配中的靈活性。
下面參考圖3到5描述本發明的實施例。圖3是包括一組消息報頭域和 消息主體(消息的"有效負載"數據)的典型消息的結構的示意表示。消息 報頭可以包括多個不同的域,該域包括,例如消息格式信息;主題域;所 要求的服務質量的指示(永久的或非永久的,以控制是否應該把消息保存到 非易失存儲器,以在故障的情況下可以被恢復);以及保留標記(以指示代理 是否應該保留該發布物的副本,以使該主題的最新發布物對于此主題的未來 訂戶是可用的)。附加的報頭域在本技術領域中是已知的。
例如發布者應用程序可以使用諸如如下的API呼叫來調用在與發布/訂閱 代理的現有連接上的發送操作以發布信息
發布(主題、數據、永久性、保留) 其中"永久性"和"保留"的每個是如上所述的消息性質,并且是與所發布 的消息的報頭域內的主題信息一起被指定的。所發布的消息的報頭域可以包 括在其中由字符"/"來分隔文本元素的字符串。在實現分層主題分類方案的 傳統的發布/訂閱系統中,解譯諸如"根/主題A/主題X"的由發布者指定的 主題串作為單個層次主題名稱,并僅將其標識為對于指定完全相同的主題串
"根/主題A/主題X"(或等同使用諸如""主題A/主題X"或"根/主題A/" 的通配才奪)的訂閱的匹配。
從編程API解釋為消息報頭在本技術領域中是已知的。例如,在一些已 知的系統中,消息具有包含了以類似XML格式的發布/訂閱屬性的報頭。關 于主題"根/主題A/主題X"的所發布的消息在其消息報頭中可能具有以下內 容
<psc〉
<Command>Publish</Command>
<Topic>root/topicA/topicX</Topic>
</psc>
在本發明的第一實施例中,在消息報頭的附加域內提供了附加的 'match—scheme'標簽。提供'match_scheme,域以使發布者能在指定主題 域內的主題串時指定他們已經實現的主題分類方案。在該示范實施例中,發 布者可以指定多個主題分類方案,并且將通過發布/訂閱代理識別該方案,這 些方案包括
'match一schemeOR'其指示發布者想要把所指定的主題串的各個分離的元
素解釋成可以用使用布爾OR操作符的匹配算法與訂 閱相比較的獨立的標簽(或"關鍵詞")。
'match—scheme-AND,其指示發布者想要把所指定的主題串的各個分離的元
素解釋成可以用使用布爾AND操作符的匹配算法與 訂閱相比較的獨立的標簽(或"關鍵詞")。
'match_scheme=ffl'其指示發布者想要把所指定的主題串解釋成可以使用
分層主題匹配算法與訂閱相比較的單個分層主題名 稱。
發布者可以使用如上所述的在其中用字符"/"分隔元素的傳統格式來指 定主題串,但是本發明的這種主題串格式對不同的發布者可以是不同的。在 'match—scheme'值內捕獲具體發布者的意圖。
例如,第一發布者應用程序可以用'match_scheme=ffl,指定"2012—奧 林匹克/英國—奧林匹克_團隊/帆船"。該發布者的意圖是代理和訂閱者解釋此 作為更籠統的類別"2012一奧林匹克"內的類別"英國—奧林匹克—團隊"內的 主題子類別"帆船"。
第二發布者可能用'match—scheme-OR,指定相同的主題串"2012—奧林 匹克/英國—奧林匹克—團隊/帆船",在該情況下,該發布者的意圖是可以分別 匹配分離的元素"2012_奧林匹克"、"英國—奧林匹克—團隊"和"帆船"。也 就是,發布者的意圖是可以把主題"2012—奧林匹克"、"英國—奧林匹克—團隊" 和"帆船"的任意一個標識為對于當前應用的匹配。
在另一實施例中,在建立與發布/訂閱代理的連接時指定發布者的主題分 類方案('match—scheme'值)。這在大多數情況下是可接受的,因為發布者 的方案不太可能在連續的發布物之間改變,并且確實具有代理不必在接收到 每個已發布的消息時動態地解釋'match_scheme,值的優勢。
類似地,訂戶還可以指定多個不同的主題分類方案之一,在本實施例中 該方案包括
'match一scheme二OR'其指示訂戶意圖是,應該把在他們的訂閱中所指定的
主題串的各個分離的元素解釋成可以用使用布爾OR 操作符的匹配算法與所接收到的發布物內的主題信息 相比較的獨立的標簽。
'match一scheme-AND,其指示訂戶意圖是,應該把在他們的訂閱中所指定的
主題串的各個分離的元素解釋成可以用使用布爾 AND操作符的匹配算法與所接收到的發布物內的主 題信息相比較的獨立的標簽。
'match—scheme=ffl'其指示訂戶想要把所指定的主題串解釋成可以使用分
層主題匹配算法與所接收的發布物相比較的單個分層 主題名稱。
'match—scheme=PUB,其指示訂戶希望把他們所指定的主題串與發布者指定
的意圖一致地解釋(即,依據由發布者指定的 match—scheme值的"OR"、 "AND"或"HI"的 match—scheme值)
當建立新連接時(或當接收到新發布物時,如上所述)可以通過發布/訂 閱代理解釋發布者和訂戶所指定的意圖,并且當進行訂閱匹配時應用該意圖, 如下更詳細地描述的。如果訂戶指定了代理不能處理的所要求的 'match_scheme,,那么協商可能隨之而來,以使訂戶能指定與由代理所支持 的匹配算法之一相一致的匹配方案——初步檢查代理是否能處理第一個由訂
戶指定的match—scheme,然后,如果不能,檢查代理是否能處理第二個指定 的match—scheme。如果訂戶的要求確實很重要并且代理不能滿足該要求,那 么可能拒絕該訂閱請求。在一個實施例中,如果需要,代理可以取出或調用 遠程匹配算法。
如圖4所示,根據本發明的優選實施例的發布/訂閱消息代理200包括與 一組匹配組件220、 222、 224關聯的匹配引擎210和匹配組件選擇器230。 用于每個已連接的發布者系統的接收器組件260包括通信棧和用于把所接受 的消息從所接收的規范字節格式分解(demarshal)成消息代理的內部消息表 示的協議處理器模塊。有對于每個訂戶系統的相應的發射器(transmitter), 用于把消息匯集成規范的字節格式,以允許消息在網絡連接上流通。通信棧 能訪問用于與外部網絡通信的TCP/IP套接字。消息代理200在具體的TCP 端口上監聽新建立的客戶連接。TCP/IP僅是一個示例協議,并且本發明不限 于任何具體的通信協議。
當接收到進入的連接請求時,消息代理引導用于該客戶的通信棧。該棧 負責維持與客戶的連接并監視套接字連接的當前狀態。通信棧引導協議處理 模塊,并且協議處理模塊處理所接收的消息的格式和通信協議的編碼和解碼, 以便實現可以由消息代理使用的內部目標表示。例如,協議模塊將把來自發 布者客戶的進入消息分解成為目標形式,并將其提交給發布/訂閱匹配引擎 210,用于與已登記的訂閱比較,并且將把其匯集用于傳遞到訂戶。另外,當 發布者請求與代理連接時,發布者還指定其如上所述的主題分類方案。然后, 把用于每個發布者的主題分類方案存儲在代理上的表格240中。
訂戶把他們的訂閱請求發送給代理,并且這些訂閱請求指定了主題串和 主題分類方案兩者。把訂閱存儲在代理上的貯存器250中。對于主題串被指 定給其作為分層主題串的每個訂閱,把這組分層的主題元素添加到表示所有
已登記的訂閱的整組分層主題串的主題樹中。也就是,把每個訂閱的主題串 表示為樹內的路徑(見圖1)。除了這些分層的主題串以外,由訂戶指定的任 意 一卄分層的串與列出當前已登記的訂戶的所有主題分類方案的文件255 —起 也被存儲在貯存器250中。在本實施例中,通過其'match—scheme'值把訂 閱索引到貯存器中。
圖5示出響應于接收到新的發布物而由發布/訂閱代理進行的步驟的序 列。接收器組件的協議處理模塊把消息分解并把消息傳遞到發布/訂閱匹配引擎210,如上所述。響應于接收280所發布的消息,進行初始檢查290,以確 定是否有任何當前已登記的訂閱。如果該確定是否定的,那么刪除消息300。 如果確定是肯定的,那么調用310匹配組件選擇器230,以確定用于對該發 布物進行訂閱匹配的合適的匹配組件或 一組匹配組件220 、 222 、 224 。
檢查訂閱貯存器250中的文件255內的'match—scheme'列表,以確定 320是否有任何當前已登記的訂戶已經指定了期望的主題'match—scheme', 并標識方案列表。如果有任何已登記的訂戶已經指定了依照特定主題分類方 案來解釋其主題串的要求,那么匹配組件選擇器230選擇330用于該方案的 相應的匹配組件。選擇器230選擇另外的匹配組件,用于在其中存在當前已 登記的訂戶的每個主題分類方案。
然后,匹配引擎210依次調用340每個已選擇的匹配組件,并且對所接 收的發布物執行350他們各自的匹配處理。對于每個已選擇的匹配組件220、 222、 224,比較所接收的發布物與已經指定了相應的主題分類方案的每一個 訂閱(即,具有對應于各自的匹配組件的'match—scheme'值的每個訂閱)。 因此,在該實施例中,由每個訂戶指定的'match_scheme,優先于任何由發 布者指定的'match—scheme'——發布者的意圖不能不考慮明確指定的訂戶 要求。
進行檢查360是否存在任何沒有指定主題分類方案的已登記的訂戶或是 否存在任何被指定的'match—scheme=PUB,。如果該確定是肯定的,那么確 定370發布者是否已經指定主題分類方案。對于先前已經向代理標識了主題 分類方案的發布者,匹配組件選擇器從方案表240取出主題分類方案,并且 匹配組件選擇器230選擇330實現與發布者指定的主題分類方案一致的匹配 算法的匹配組件。
如果任何一個訂戶都沒有指定'match—scheme'值,并且發布者也沒有 指定'match_scheme'值,那么發布/訂閱代理假設將使用默認的主題分類方 案,這在本示例實施例中是分層的主題命名方案。匹配引擎調用380用于該 主題命名方案的默認匹配組件。該匹配組件^丸行其匹配處理,以檢查390匹 配的i丁閱。
然后,把從執行每個已調用的匹配組件中得到的所標識的訂戶組與由其 他匹配組件所標識的訂戶組結合400。然后,把消息轉發400給匹配訂戶的 集合組。
雖然已經詳細地描述了本發明的具體示范實施例,但是本發明不限于該 具體實施例,并且本發明包含在隨后的權利要求范圍內的所有實施例。本領 域的技術人員將認識到,在本發明的范圍內,可以對所述實施例做出各種改 進和〗務改。
權利要求
1.一種用于發布/訂閱數據處理系統中的訂閱匹配的方法,其中,所述訂閱匹配包括比較所接收的發布物內的主題標識符與訂戶的所存儲的訂閱內的主題標識符,以確定是否應該把所接收的發布物轉發給訂戶,該方法包括步驟從訂閱中確定各自的訂戶希望訂閱匹配來實現第一主題分類方案還是第二主題分類方案;以及響應于所述確定步驟,調用訂閱匹配組件來進行實現所述第一主題分類方案和第二主題分類方案中相應一個的訂閱匹配處理。
2. 根據權利要求1所述的方法,進一步包括 標識用于一組訂戶的所要求的主題分類方案組;對于每個已標識的所要求的主題分類方案組,調用訂閱匹配組件來進行 實現相應的主題分類方案的訂閱匹配處理;以及集合所述訂閱匹配處理的結果,以標識應該把所述發布物轉發給的訂戶 的集合組。
3. 根據權利要求1或權利要求2所述的方法,其中,所述第一主題分類 方案是發布者指定的主題分類方案。
4. 根據權利要求3所述的方法,其中,在建立發布者和發布/訂閱代理 之間的連接期間,給所述發布/訂閱代理指定所述發布者指定的主題分類方案。
5. 根據權利要求3或權利要求4所述的方法,其中,在發布的消息內指 定所述發布者指定的主題分類方案。
6. 根據權利要求3到5的任意之一所述的方法,其中,通過在發布的消 息內的URI引用所述發布者指定的主題分類方案。
7. 根據權利要求3到6的任意之一所述的方法,其中,在不存在用于訂 閱匹配以實現任何替換的主題分類方案的明確的訂戶指定的請求的情況下, 確定所述訂戶希望訂閱匹配來實現所述發布者指定的主題分類方案。
8. —種發布/訂閱代理,用于從至少一個發布者處接收發布物,并將發 布物轉發給已經登記了對接收發布物的興趣的訂戶,所述發布/訂閱代理包 括用于比較在所接收的發布物內的主題標識符與在被存儲在所述發布/訂 閱代理中的訂閱內的主題標識符以確定應該把所述發布物轉發給哪些訂戶的裝置;其中,所述用于比較的裝置包括一組訂閱匹配組件和用于選擇所述一組 訂閱匹配組件中的至少一個的裝置,其中,所述用于選擇的裝置響應于指定所要求的主題分類方案的訂戶或發布者中的至少一個。
9. 根據權利要求8所述的發布/訂閱代理,其中,所述用于選擇的裝置 選擇對于由訂戶指定的每個主題分類方案實現相應的主題分類方案的訂閱匹配組件。
10. 根據權利要求9所述的發布/訂閱代理,其中,所述用于選擇的裝置 響應于標識沒有指定主題分類方案的訂閱而選擇實現發布者指定的主題分類 方案的訂閱匹配組件。
11. 一種在發布/訂閱通信網絡中使用的數據處理系統,所述系統包括 用于從一個或多個發布者處接收發布物的裝置; 用于把發布物發送到一個或多個訂戶的裝置;以及 發布/訂閱代理,用于比較在所接收的發布物內的主題標識符與在被存儲在發布/訂閱代理中的訂閱內的主題標識符,以確定應該把哪些發布物發送給 哪些訂戶;其中,所述發布/訂閱代理包括至少兩個訂閱匹配組件和用于從訂閱中確 定各個訂戶想要代理的訂閱匹配來實現第一發布者指定的主題分類方案還是 第二主題分類方案;以及其中,所述發布/訂閱代理響應于所述確定步驟來調用訂閱匹配組件,以 進行實現第一主題分類方案和第二主題分類方案中相應一個的訂閱匹配處 理。
12. —種在發布/訂閱通信網絡中使用的數據處理系統,所述系統包括 數據處理單元;數據存儲單元; 網絡通信接口;以及發布/訂閱代理,用于從至少一個發布者處接收發布物并將發布物轉發給 已經登記了對接收發布物的興趣的訂戶,其中,所述發布/訂閱代理包括 用于比較在所接收的發布物內的主題標識符與在被存儲在所述發布/訂裝置;其中,所述用于比較的裝置包括一組訂閱匹配組件和用于選擇所述一組 訂閱匹配組件中的至少一個的裝置,其中,所述用于選4奪的裝置響應于指定 所要求的主題分類方案的訂戶或發布者中的至少一個。
全文摘要
提供了用于在發布/訂閱通信網絡中的靈活的主題標識的方法、裝置和計算機程序。發布者和訂戶能夠指定他們關于在訂閱匹配期間將由發布/訂閱代理使用的主題分類方案的意圖,并且代理響應于發布者和訂戶之一或兩者所指定的意圖而調用各自的訂閱匹配組件。所調用的匹配組件每個實現與所指定的主題分類方案一致的訂閱匹配處理。
文檔編號H04L12/58GK101193077SQ20071018695
公開日2008年6月4日 申請日期2007年11月15日 優先權日2006年11月30日
發明者喬斯·E·加爾扎, 加雷思·E·瓊斯, 本杰明·J·弗萊徹, 馬丁·J·蓋爾 申請人:國際商業機器公司