用于控制消息遞送系統(tǒng)中的消息傳遞的方法和系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及消息遞送系統(tǒng)(messaging system)中的消息傳遞,并且更特別地涉及控制從發(fā)布者應用到一個或更多個訂戶應用的消息傳遞。
【背景技術】
[0002]發(fā)布/訂閱是消息遞送機制,通過其訂戶應用(在下文中稱為“訂戶”)可以從發(fā)布者應用(在下文中稱為“發(fā)布者”)以消息的形式接收信息。在該上下文中,消息是用于在應用程序之間交換的數(shù)據(jù)單位(諸如一個或更多個比特或一串數(shù)據(jù))。典型的發(fā)布/訂閱系統(tǒng)具有多于一個發(fā)布者和多于一個訂戶。
[0003]通過通用的消息遞送系統(tǒng)的組件(諸如隊列管理器)或通過被稱為消息中介(broker)的組件典型地控制發(fā)布者和訂戶之間的交互作用。消息遞送系統(tǒng)是可以連接應用的服務,并且隊列是由消息遞送系統(tǒng)維持的消息的有序列表。應用可以將消息放置在隊列上或從隊列請求消息。隊列管理器和消息中介之間的區(qū)別與本發(fā)明無關,并且這些術語在下面的描述內(nèi)可以可互換地使用。
[0004]發(fā)布者供應關于主題的信息,而不需要知道關于對該信息感興趣的應用的任何東西。發(fā)布者以消息的形式產(chǎn)生他們想要發(fā)布的這個信息,稱為發(fā)布,并且定義這些消息的話題(topic)??刂平M件(隊列管理器或消息中介)接收來自發(fā)布者的消息以及識別關于一個或更多個話題的訂戶的訂閱。然后它將發(fā)布的消息路由(route)到已登記的對一個或更多個話題感興趣的訂戶。
[0005]訂戶創(chuàng)建描述訂戶感興趣的話題的訂閱。因此,訂閱確定哪些發(fā)布被轉(zhuǎn)送到訂戶。訂戶可以進行復數(shù)個訂閱并且可以從許多不同發(fā)布者接收信息。
[0006]缺點是消息的發(fā)布可能是對于發(fā)布者和/或中介而言代價高的操作。例如,如果發(fā)布者是要求使用無線電來發(fā)布消息的低功率的傳感器,則消息的發(fā)布將消耗非常需要的電池功率。此外,如果要發(fā)布的消息非常大,可能要求大量資源來發(fā)布該消息。
[0007]因此發(fā)布者期望的是諸如在例如不存在對于該消息的話題的訂戶時避免消息的不必要的發(fā)布。用于解決這個的已知的途徑是發(fā)布者將關于消息話題的信息發(fā)送給中介并且詢問是否存在任何匹配該話題的訂閱。然而,這個途徑要求發(fā)布者和中介之間的請求/響應會話。此外,如果發(fā)布者正在發(fā)布關于許多不同話題的消息,則可能要求許多會話。
【發(fā)明內(nèi)容】
[0008]根據(jù)本發(fā)明的一個方面,提供了一種用于控制從消息遞送系統(tǒng)的發(fā)布者應用到一個或更多個訂戶應用的消息傳遞的方法,所述一個或更多個訂戶應用具有向所述消息遞送系統(tǒng)的中介應用登記的多個訂閱,所述方法包括如下步驟:產(chǎn)生統(tǒng)一訂閱描述,所述統(tǒng)一訂閱描述表示向所述中介應用登記的所述多個訂閱;以及將所述統(tǒng)一訂閱描述傳送到所述發(fā)布者應用。
[0009]因此實施例可以提出一種方法,通過該方法單個統(tǒng)一或者合并的訂閱可以被產(chǎn)生來表示所有訂閱。這個統(tǒng)一表示然后能夠被提供給發(fā)布者,作為推送或者拉取(pull)操作,并且隨后被用于確定是否應該發(fā)布消息。這種途徑可以避免對在發(fā)布者和中介之間代價高的通信和/或會話的需要。此外,統(tǒng)一訂閱描述在尺寸方面可以比所有訂閱的完整列表小得多。因此實施例可以減少在發(fā)布者和中介之間發(fā)送的數(shù)據(jù)的量。
[0010]實施例還可以使得發(fā)布者能夠使他發(fā)布的消息的量最小化,其又可以減少發(fā)布者使用/要求的資源的量。
[0011]產(chǎn)生統(tǒng)一訂閱描述的步驟可以包括計算表示多個訂閱的多個有限狀態(tài)機(FSM)的并集FSM。此外,向所述中介應用登記的所述多個訂閱可以由多個文本串表示,并且在計算并集FSM的步驟之前可以有將多個文本串中的每一個轉(zhuǎn)換成各自的FSM使得獲得表示所述多個訂閱的多個FSM的步驟。
[0012]并集FSM可以被最小化和/或序列化,使得具有改善的傳輸特性。
[0013]所述發(fā)布者應用可以使用所述統(tǒng)一訂閱描述來確定要發(fā)布的消息是否匹配所述多個訂閱中的任何一個,并且只有當確定該消息匹配所述多個訂閱中的任何一個時才發(fā)布所述消息。如果消息的話題匹配該多個訂閱中的任何一個,可以確定存在至少一個想要該消息的訂戶,并且發(fā)布者然后可以發(fā)布該消息。相反地,如果該消息的話題不匹配多個訂閱中的任何一個,可以確定不存在想要該消息的訂戶,并且發(fā)布者然后可以不發(fā)布該消息。
[0014]換句話說,在發(fā)布消息之前,發(fā)布者可以檢查該消息的話題是否匹配由統(tǒng)一訂閱表示的訂閱中的任何一個。以這種方式,發(fā)布者應用可以被布置為僅僅在存在對于它的內(nèi)容的訂戶的情況下發(fā)布消息。因此可以避免消息的不必要的發(fā)布。
[0015]此外,在確定要發(fā)布的消息不匹配所述多個訂閱中的任何一個的情況下消息可以被存儲在發(fā)布者應用處。如果在預定時間內(nèi)不發(fā)布所存儲的消息則可以拋棄所存儲的消息。
[0016]實施例提供用于使得發(fā)布者能夠只有當存在對于一個或更多個話題的訂戶/消費者時才發(fā)布與該一個或更多個話題有關的消息的概念。該概念可以被用在包括發(fā)布者子系統(tǒng)、中介子系統(tǒng)和多個訂戶子系統(tǒng)的發(fā)布者_訂戶系統(tǒng)中。中介子系統(tǒng)可以產(chǎn)生所有訂閱的并集(即合并的描述)作為并集FSM并且隨后將它發(fā)送給發(fā)布者子系統(tǒng)。發(fā)布者子系統(tǒng)然后可以存儲并集FSM并且使用并集FSM來確定要發(fā)布的消息的話題是否匹配訂閱中的任何一個。發(fā)布者子系統(tǒng)可以只有當消息的話題匹配任何訂閱時才發(fā)布消息。
[0017]根據(jù)本發(fā)明的另一個方面,提供了一種計算機程序產(chǎn)品,用于控制從消息遞送系統(tǒng)的發(fā)布者應用到一個或更多個訂戶應用的消息傳遞,所述一個或更多個訂戶應用具有向所述消息遞送系統(tǒng)的中介應用登記的多個訂閱,其中計算機程序產(chǎn)品包括具有具體化的計算機可讀程序代碼的計算機可讀存儲介質(zhì),該計算機可讀程序代碼被配置為執(zhí)行如下步驟:產(chǎn)生統(tǒng)一訂閱描述,所述統(tǒng)一訂閱描述表示向所述中介應用登記的所述多個訂閱;以及將所述統(tǒng)一訂閱描述傳送到所述發(fā)布者應用。
[0018]根據(jù)本發(fā)明的又一個方面,提供了一種用于控制從發(fā)布者應用到一個或更多個訂戶應用的消息傳遞的消息遞送系統(tǒng),所述一個或更多個訂戶應用具有向所述中介應用登記的多個訂閱,所述系統(tǒng)包括:處理單元,適于產(chǎn)生表示向所述中介應用登記的所述多個訂閱的統(tǒng)一訂閱描述并且將所述統(tǒng)一訂閱描述傳送到所述發(fā)布者應用。
【附圖說明】
[0019]現(xiàn)在將通過僅僅示例的方式參考附圖描述本發(fā)明的實施例,在附圖中:
[0020]圖1是根據(jù)本發(fā)明實施例的消息遞送系統(tǒng)的實現(xiàn)方式的示例的框圖;
[0021]圖2是根據(jù)本發(fā)明實施例的方法的實現(xiàn)方式的示例的流程圖;以及
[0022]圖3是根據(jù)本發(fā)明的實施例的系統(tǒng)的示意性框圖。
【具體實施方式】
[0023]提出了用于使得發(fā)布者能夠只有當存在對于一個或更多個話題的訂戶/消費者時才發(fā)布與該一個或更多個話題有關的消息的概念。該概念可以被用在包括發(fā)布者、中介和多個訂戶的消息遞送系統(tǒng)中。提出了產(chǎn)生訂閱的合并描述(或被稱為“統(tǒng)一訂閱描述”)并且隨后將其發(fā)送給發(fā)布者。發(fā)布者能夠使用統(tǒng)一訂閱描述來確定要發(fā)布的消息的話題是否匹配任何訂閱。以這種方式,發(fā)布者能夠確定是否存在發(fā)布消息的任何需要并且由此避免發(fā)布不存在訂閱的消息。
[0024]參考圖1,描繪了根據(jù)本發(fā)明的一個實施例的消息遞送系統(tǒng)。消息遞送系統(tǒng)10包括發(fā)布者12、消息中介14、以及多個訂戶16。由消息中介14控制交互作用,諸如從發(fā)布者12到訂戶16的消息的通信。消息遞送系統(tǒng)10是可以連接應用的服務,并且隊列是由消息遞送系統(tǒng)10維持的消息的有