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