消息發(fā)布與訂閱的方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種消息發(fā)布與訂閱的方法及裝置,涉及信息處理領(lǐng)域,主要通過為發(fā)布者以及訂閱者在消息中間件中設(shè)置相應(yīng)的虛擬主題,或者通過對發(fā)布者以及訂閱者向消息中間件進行語義識別,用以提供更高的信息傳輸效率和更強的靈活性。
【專利說明】消息發(fā)布與訂閱的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息處理領(lǐng)域,尤其涉及一種消息發(fā)布與訂閱的方法及裝置。
【背景技術(shù)】
[0002]消息中間件利用高效可靠的消息傳遞機制進行與平臺無關(guān)的數(shù)據(jù)交流,通過提供消息傳遞和消息排隊模型,它可以在分布式環(huán)境下擴展進程間的通信。
[0003]在消息中間件的消息傳輸模式中,發(fā)布/訂閱模式是最常用的傳輸機制。發(fā)布者和訂閱者之間通過主題交換信息:發(fā)布者把消息發(fā)布到相關(guān)主題,訂閱者在該主題上注冊并接收該主題上的信息,通過這種方式主題把發(fā)布者和訂閱者連接起來。
[0004]傳統(tǒng)的發(fā)布/訂閱系統(tǒng)的消息路由方式是一種基于內(nèi)容和地址相結(jié)合的路由方式,在這種路由體系下,首先根據(jù)主題內(nèi)容,并結(jié)合預(yù)先收集的訂閱者,來確定關(guān)于同一個主題的消息有或者沒有哪些感興趣的訂閱者,以及這些訂閱者的目的地服務(wù)器和接收隊列,然后,再通過靜態(tài)路由體系確定該消息將被分發(fā)至哪些本地接收隊列和下一個路由節(jié)點。所以在這種路由體系下,發(fā)布者與訂閱者之間傳輸?shù)南⒈仨殧y帶一個主題。
[0005]然而,主題的改變,例如主題的名稱或者類別的改變,都會影響消息路由的目的地,而發(fā)布者或訂閱者必須知道這些改變才能發(fā)布或訂閱到正確的主題上。在大規(guī)模應(yīng)用的場景下,特別是在互聯(lián)網(wǎng)環(huán)境的情況下,這種改變會引發(fā)發(fā)布者或訂閱者大的改變和不必要的網(wǎng)絡(luò)開銷。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的實施例提供一種消息發(fā)布與訂閱的方法及裝置,以提供更高的信息傳輸效率,和更強的靈活性。
[0007]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0008]第一方面,本發(fā)明提供了一種消息發(fā)布的方法,包括:
[0009]獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消息;
[0010]根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述實際主題用于發(fā)布者和訂閱者之間的消息轉(zhuǎn)發(fā);
[0011]當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;
[0012]當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0013]結(jié)合第一方面,在第一方面的第一種可能實現(xiàn)方式中,還包括:
[0014]當(dāng)未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,得到語義解析結(jié)果,并根據(jù)所述語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0015]若查找到與所述語義解析結(jié)果匹配的實際主題,則生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則。
[0016]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,在所述生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則之后,還包括:
[0017]根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;
[0018]當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;
[0019]當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0020]結(jié)合第一方面的第一種或第二種可能實現(xiàn)方式,在第三種可能實現(xiàn)方式中,還包括:
[0021]若未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。
[0022]結(jié)合第一方面,在第四種可能實現(xiàn)方式中,在根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑之前,還包括:
[0023]判斷獲取的所述消息是否為控制消息,所述控制消息用于更新已存儲的虛擬主題與實際主題之間的路由規(guī)則;
[0024]若獲取的所述消息不是控制消息,則執(zhí)行根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑的步驟;
[0025]若確定獲取的所述消息是控制消息,則根據(jù)所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改;存儲修改后的虛擬主題與實際主題之間的路由規(guī)則。
[0026]結(jié)合第一方面或第一方面的前四種可能實現(xiàn)方式中的任意一種,在第五種可能的實現(xiàn)方式中,在所述根據(jù)查找到的所有傳輸路徑,傳輸所述消息的標(biāo)識信息之前,還包括:
[0027]生成與所述消息對應(yīng)的標(biāo)識信息;
[0028]則當(dāng)所述消息的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將該發(fā)布者發(fā)送的消息發(fā)送至傳輸路徑的終點所對應(yīng)的訂閱者包括:
[0029]當(dāng)所述消息的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息,并將與所述標(biāo)識信息對應(yīng)的消息發(fā)送至傳輸路徑的終點所對應(yīng)的訂閱者。
[0030]第二方面,本發(fā)明提供了一種消息發(fā)布的方法,包括:
[0031]獲取發(fā)布者已發(fā)送的消息;
[0032]對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;[0033]若查找到與所述語義解析結(jié)果匹配的實際主題,則在已存儲的訂閱對應(yīng)關(guān)系中,查找與所述實際主題對應(yīng)的訂閱者;
[0034]若查找到所述實際主題對應(yīng)的訂閱者,則將所述獲取到的消息發(fā)送至所有查找到的訂閱者。
[0035]結(jié)合第二方面,在第一種可能實現(xiàn)方式中,還包括:
[0036]若未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并存儲新創(chuàng)建的實際主題。
[0037]第三方面,本發(fā)明提供了一種消息訂閱的方法,包括:
[0038]獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息;
[0039]根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述目的實際主題用于訂閱者對應(yīng)的虛擬主題之間的消息轉(zhuǎn)發(fā)。
[0040]結(jié)合第三方面,在第一種可能實現(xiàn)方式中,所述根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則包括:
[0041]當(dāng)獲取的所述消息為控制消息時,根據(jù)所述控制消息獲取目的實際主題,所述控制消息用于更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規(guī)則;
[0042]創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與根據(jù)所述控制消息獲取到的目的實際主題之間的路由規(guī)則。
[0043]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則包括:
[0044]當(dāng)獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0045]若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與查找到的與所述語義解析結(jié)果匹配的實際主題之間的路由規(guī)則。
[0046]結(jié)合第三方面的第二種可能實現(xiàn)方式,在第三種可能實現(xiàn)方式中,還包括:
[0047]若在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則。
[0048]第四方面,本發(fā)明提供了一種消息訂閱的方法,包括:
[0049]獲取訂閱者已發(fā)送至與所述訂閱者對應(yīng)的虛擬主題的消息;
[0050]對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0051]若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建查找到的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0052]結(jié)合第四方面,在第一種可能實現(xiàn)方式中,還包括:
[0053]若在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并創(chuàng)建新創(chuàng)建的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0054]第五方面,本發(fā)明提供了一種消息發(fā)布的裝置,包括:[0055]信息處理模塊,用于獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的信息;
[0056]主題模塊,用于根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述實際主題用于發(fā)布者和訂閱者之間的消息轉(zhuǎn)發(fā);
[0057]傳輸模塊,用于當(dāng)所述主題模塊查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0058]結(jié)合第五方面,在第五方面的第一種可能實現(xiàn)方式中,還包括:
[0059]語義識別模塊,用于當(dāng)所述主題模塊未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,對所述消息進行語義解析,得到語義解析結(jié)果,并根據(jù)所述語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0060]所述路由規(guī)則生成模塊,用于若所述語義識別模塊查找到與所述語義解析結(jié)果匹配的實際主題,則生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則。
[0061]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式,所述主題模塊,用于根據(jù)當(dāng)前所述路由規(guī)則生成模塊已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;
[0062]所述傳輸模塊,還用于當(dāng)所述主題模塊查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0063]結(jié)合第五方面的第一種或第二種可能實現(xiàn)方式,在第三種可能實現(xiàn)方式中,所述主題模塊,還用于在未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題;
[0064]所述路由規(guī)則生成模塊,還用于存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。
[0065]結(jié)合第五方面,在第三種可能實現(xiàn)方式中,所述信息處理模塊,還用于判斷獲取的所述消息是否為控制消息,所述控制消息用于更新已存儲的虛擬主題與實際主題之間的路由規(guī)則;
[0066]所述主題模塊,用于在所述信息處理模塊確定獲取的所述消息不是控制消息,則根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;
[0067]所述路由規(guī)則生成模塊,還用于若所述信息處理模塊確定獲取的所述消息是控制消息,則根據(jù)所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改;存儲修改后的虛擬主題與實際主題之間的路由規(guī)則。[0068]結(jié)合第三方面或第三方面的前四種可能的實現(xiàn)方式中的任意一種,在第五種可能的實現(xiàn)方式中,所述信息處理模塊還用于生成與所述消息對應(yīng)的標(biāo)識信息;
[0069]所述傳輸模塊,還用于當(dāng)所述與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息,并將與所述標(biāo)識信息對應(yīng)的消息發(fā)送至傳輸路徑的終點所對應(yīng)的訂閱者。
[0070]第六方面,本發(fā)明提供了一種消息發(fā)布的裝置,包括:
[0071]獲取模塊,用于獲取發(fā)布者已發(fā)送的消息;
[0072]語義識別模塊,用于對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0073]主題模塊,用于在查找到與所述語義解析結(jié)果匹配的實際主題時,在已存儲的訂閱對應(yīng)關(guān)系中,查找與所述實際主題對應(yīng)的訂閱者;
[0074]傳輸模塊,用于在查找到所述實際主題對應(yīng)的訂閱者時,將所述獲取到的消息發(fā)送至所有查找到的訂閱者。
[0075]結(jié)合第六方面,在第一種可能實現(xiàn)方式中,所述主題模塊,還用于在未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并存儲新創(chuàng)建的實際主題。
[0076]第七方面,本發(fā)明提供了一種消息訂閱的裝置,包括:
[0077]獲取模塊,用于獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息;
[0078]創(chuàng)建模塊,用于根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述目的實際主題用于訂閱者對應(yīng)的虛擬主題之間的消息轉(zhuǎn)發(fā)。
[0079]結(jié)合第七方面,在第一種可能實現(xiàn)方式中,所述創(chuàng)建模塊包括:
[0080]第一主題子模塊,用于當(dāng)獲取的所述消息為控制消息時,根據(jù)所述控制消息獲取所述目的實際主題,所述控制消息用于更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規(guī)則;以及用于更新所述訂閱者對應(yīng)的虛擬主題與根據(jù)所述控制消息獲取到的目的實際主題之間的路由規(guī)則。
[0081]結(jié)合第七方面,在第二種可能實現(xiàn)方式中,所述創(chuàng)建模塊包括:
[0082]語義識別子模塊,用于當(dāng)獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0083]第二主題子模塊,用于在在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題時,將查找到的實際主題作為目的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與查找到的與所述語義解析結(jié)果匹配的實際主題之間的路由規(guī)則。
[0084]結(jié)合第七方面的第二種可能實現(xiàn)方式,在第三種可能實現(xiàn)方式中,所述第二主題子模塊,還用于在在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則。
[0085]第八方面,本發(fā)明提供了一種消息訂閱的裝置,包括:
[0086]獲取模塊,用于獲取訂閱者已發(fā)送的消息;[0087]語義識別模塊,用于對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;
[0088]主題模塊,用于在在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建查找到的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0089]結(jié)合第八方面,在第一種可能實現(xiàn)方式中,所述主題模塊還用于在在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并創(chuàng)建新創(chuàng)建的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0090]本發(fā)明實施例提供的消息發(fā)布與訂閱的方法,通過為發(fā)布者以及訂閱者在消息中間件中設(shè)置相應(yīng)的虛擬主題,或者通過對發(fā)布者以及訂閱者向消息中間件進行語義識別,以保證發(fā)布者以及訂閱者不需要獲知實際主題的具體結(jié)構(gòu)的情況下,仍然保證信息被正確地傳輸。相比于現(xiàn)有技術(shù)中,當(dāng)消息中間件中的主題發(fā)生變化時,發(fā)布者以及訂閱者必須要獲知的變更結(jié)果并主動修改路由規(guī)則才能完成數(shù)據(jù)傳輸?shù)募夹g(shù)方案來講,本發(fā)明實施例提供的技術(shù)方案信息傳輸效率更高,靈活性更強。
【專利附圖】
【附圖說明】
[0091]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0092]圖1為本發(fā)明實施例提供的一種消息中間件的組成框圖;
[0093]圖2為本發(fā)明實施例提供的另一種消息中間件的組成框圖;
[0094]圖3為本發(fā)明實施例提供的一種消息發(fā)布的方法流程圖;
[0095]圖4為本發(fā)明實施例提供的另一種消息發(fā)布的方法流程圖;
[0096]圖5為本發(fā)明實施例提供的另一種消息發(fā)布的方法流程圖;
[0097]圖6為本發(fā)明實施例提供的另一種消息發(fā)布的方法流程圖;
[0098]圖7為本發(fā)明實施例提供的一種消息訂閱的方法流程圖;
[0099]圖8為本發(fā)明實施例提供的另一種消息訂閱的方法流程圖;
[0100]圖9為本發(fā)明實施例提供的另一種消息訂閱的方法流程圖;
[0101]圖10為本發(fā)明實施例提供的一種消息發(fā)布的方法流程圖;
[0102]圖11為本發(fā)明實施例提供的另一種消息發(fā)布的方法流程圖;
[0103]圖12為本發(fā)明實施例提供的另一種消息訂閱的方法流程圖;
[0104]圖13為本發(fā)明實施例提供的另一種消息訂閱的方法流程圖;
[0105]圖14為本發(fā)明實施例提供的一種消息發(fā)布的裝置的組成框圖;
[0106]圖15為本發(fā)明實施例提供的另一種消息發(fā)布的裝置的組成框圖;
[0107]圖16為本發(fā)明實施例提供的另一種消息發(fā)布的裝置的組成框圖;
[0108]圖17為本發(fā)明實施例提供的另一種消息訂閱的裝置的組成框圖;
[0109]圖18為本發(fā)明實施例提供的另一種消息訂閱的裝置的組成框圖;
[0110]圖19為本發(fā)明實施例提供的另一種消息訂閱的裝置的組成框圖;
[0111]圖20為本發(fā)明實施例提供的另一種消息訂閱的裝置的組成框圖;[0112]圖21為本發(fā)明實施例提供的另一種消息中間件的組成框圖;
[0113]圖22為本發(fā)明實施例提供的另一種消息中間件的組成框圖。
【具體實施方式】
[0114]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0115]本發(fā)明實施例提供的兩種消息中間件(message broker )的組成結(jié)構(gòu)圖,用以實現(xiàn)本發(fā)明實施例提供的消息發(fā)布與訂閱的方法,一般以可運行于操作系統(tǒng)和應(yīng)用軟件之間的軟件形式存在,用于進行多個操作系統(tǒng)之間、多個應(yīng)用軟件之間以及操作系統(tǒng)和應(yīng)用軟件之間的信息傳輸。
[0116]圖1為本發(fā)明實施例提供的消息中間件的一種實現(xiàn)方式的組成結(jié)構(gòu)圖,在此結(jié)構(gòu)中,對應(yīng)于消息中間件外的每個發(fā)布者和訂閱者,都各自設(shè)置有一個虛擬主題,該虛擬主題的作用相當(dāng)于發(fā)布者或訂閱者在消息中間件中的映射設(shè)備,具有查找下一跳實際主題和轉(zhuǎn)發(fā)消息的功能。具體的,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā)。
[0117]虛擬主題和發(fā)布者之間以及虛擬主題與訂閱者之間都設(shè)置有一個信息處理模塊,該信息處理模塊主要用于對發(fā)布者或訂閱者發(fā)送到消息中間件的消息進行識別,和生成與對發(fā)布者或訂閱者發(fā)送到消息中間件的消息相對應(yīng)的標(biāo)識信息。
[0118]信息處理模塊還連接有路由規(guī)則生成模塊和存儲適配模塊。路由規(guī)則生成模塊用于生成虛擬主題和實際主題之間的路由規(guī)則,存儲適配模塊用于存儲發(fā)布者或訂閱者發(fā)送到消息中間件的消息。
[0119]路由規(guī)則生成模塊和存儲適配模塊都連接到路由模塊,路由模塊用于存儲虛擬主題和實際主題之間的路由規(guī)則。
[0120]消息中間件中還設(shè)置有實際主題,該實際主題根據(jù)虛擬主題和實際主題之間的路由規(guī)則,與若干個虛擬主題建立邏輯連接關(guān)系,具有查找下一跳實際主題或下一跳虛擬主題和轉(zhuǎn)發(fā)消息的功能。,具體的,所述實際主題用于發(fā)布者對應(yīng)的虛擬主題和訂閱者對應(yīng)的虛擬主題之間的消息轉(zhuǎn)發(fā)實際主題也連接到路由模塊中。實際主題結(jié)構(gòu)可以采用現(xiàn)有技術(shù)常用的樹形結(jié)構(gòu),也可以使用其他的結(jié)構(gòu),本發(fā)明實施例對此不進行限制。
[0121]消息中間件中還設(shè)置有由語義解析模塊和語義匹配模塊組成的語義識別模塊,該語義識別模塊與虛擬主題、路由規(guī)則生成模塊以及存儲適配器相連。
[0122]圖2為本發(fā)明實施例提供的消息中間件的另一種實現(xiàn)方式的組成結(jié)構(gòu)圖,該結(jié)構(gòu)中,消息中間件僅具有實際主題、由語義解析模塊和語義匹配模塊組成的語義識別模塊和存儲適配器。其中,實際主題與消息中間件外部的訂閱者以及語義識別模塊相連,語義識別模塊可以與實際主題、消息中間件外部的訂閱者、消息中間件外部的發(fā)布者以及存儲適配器相連。各個模塊的功能與圖1所示的模塊功能基本相同。
[0123]基于圖1所示的信息中間件,本發(fā)明實施例提供了一種消息訂閱的方法,如圖3所示,包括:[0124]101、獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消息。
[0125]其中,發(fā)布者和后續(xù)描述的訂閱者一般為手機、PC、服務(wù)器等終用戶終端設(shè)備。
[0126]102、根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑。
[0127]其中,已存儲的虛擬主題與實際主題之間的路由規(guī)則用于表示虛擬主題和實際主題之間的消息傳輸關(guān)系,可以由發(fā)布者、訂閱者或者網(wǎng)絡(luò)管理員事先進行設(shè)置的,或者是在消息中間件工作時實時更新的。
[0128]103、當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息。
[0129]其中,標(biāo)識信息的生成可以是消息中間件為發(fā)布者發(fā)送的消息分配的唯一的標(biāo)識信息,具體的分配方法可以使用順序排列標(biāo)號、哈希計算標(biāo)號等多種方法。此時發(fā)布者發(fā)送的消息一般需要存儲在一個獨立的存儲器件中,例如,本發(fā)明實施例提供的存儲適配器。該標(biāo)識信息主要是用于使所述訂閱者對應(yīng)的虛擬主題能夠根據(jù)所述標(biāo)識信息獲取所述消息
[0130]104、當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0131]本發(fā)明實施例提供了一種消息發(fā)布的方法,在該方法中,發(fā)布者可根據(jù)自身需要向消息中間件中與自身對應(yīng)的虛擬主題發(fā)送消息,就可以由消息中間件根據(jù)自身內(nèi)部存儲的虛擬主題與實際主題之間的路由規(guī)則相應(yīng)的傳輸路徑,并將發(fā)布者發(fā)送的消息發(fā)送至相應(yīng)的訂閱者,從而使得當(dāng)實際主題發(fā)生變化時,只需要由消息中間件的內(nèi)部對存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改即可,發(fā)布者仍可以向與消息中間件中與自身對應(yīng)的虛擬主題繼續(xù)發(fā)送消息,而不用做出任何改變。與現(xiàn)有技術(shù)中當(dāng)實際主題發(fā)生變化時,發(fā)布者必須要更改傳輸路徑才能將消息正確傳輸?shù)募夹g(shù)方案相比,消息傳輸效率更高,傳輸路徑的靈活性更強。
[0132]進一步的,在如圖3所示的方法流程的基礎(chǔ)上,本發(fā)明實施例還提供了另一種消息發(fā)布的方法,如圖4所示,執(zhí)行于步驟102之后,包括:
[0133]105、當(dāng)未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。若查找到與所述語義解析結(jié)果匹配的實際主題,則執(zhí)行步驟106。否則執(zhí)行步驟110。
[0134]其中,由于實際主題就是用于連接消息發(fā)布訂閱者的實際主題,其定義方式與現(xiàn)有技術(shù)基本相同,因此,每個實際主題一般都對應(yīng)有相應(yīng)的字符串、標(biāo)號等可以用于文字或語義匹配的主題標(biāo)識,對發(fā)布者發(fā)送的消息進行語義解析之后,會將消息解析成一系列的關(guān)鍵字。通過這些關(guān)鍵字可以與所有實際主題各自對應(yīng)的主題標(biāo)識進行模糊匹配,例如字符串匹配等,用以確定這個消息最可能的傳輸方向或路徑。
[0135]106、生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則。
[0136]107、根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑。[0137]108、當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息。
[0138]值得說明的是,若此時仍查找不到所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑,則說明此時查找到的實際主題尚無人訂閱,因此,直接將該發(fā)布者發(fā)送的消息進行存儲即可,不需要再繼續(xù)發(fā)送。
[0139]109、當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0140]110、創(chuàng)建新的實際主題,并生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。
[0141]在執(zhí)行步驟110后,不需要將消息繼續(xù)進行傳輸,其原因為:若已存儲的實際主題中并不存在發(fā)布者發(fā)送的消息對應(yīng)的實際主題,說明此時還沒有任何訂閱者訂閱了此主題。
[0142]本發(fā)明實施例進一步提供的消息發(fā)布的方法,在無法查找到相應(yīng)的傳輸路徑時,對發(fā)布者發(fā)送的消息進行語義識別,用以匹配與該消息最相近的實際主題,從而建立全新的數(shù)據(jù)傳輸路徑,以保證消息的正常準(zhǔn)確地發(fā)布。進一步地讓發(fā)布者可以完全根據(jù)自身需要去發(fā)送消息。消息中間件都能夠讓消息得到正確的傳輸。
[0143]進一步的,為了方便發(fā)布者對消息傳輸路徑的控制,因此,本發(fā)明一實施例為發(fā)布者提供了控制消息,用以修改和刪除消息中間件內(nèi)已存儲的原有路由規(guī)則或添加新的路由規(guī)則??刂葡⒖梢园?Forward轉(zhuǎn)發(fā)指令、Copy復(fù)制指令、Subscription訂閱指令、Proxy代理指令。Forward指令用于控制路由規(guī)則從一個主題完全遷移到同一消息中間件內(nèi)的另外一個主題,原主題不再獲取任何消息。Copy指令用于在保證除了原有獲取消息的主題仍獲取消息以外,還將作為消息來源的主題與指令指定的其它多個主題建立路由規(guī)則。
[0144]Subscription指令用于建立實際主題與訂閱者對應(yīng)的虛擬主題之間的路由規(guī)則。Proxy指令用于將路由規(guī)則從一個主題完全遷移到另外一個不同的消息中間件內(nèi)中的一個主題,原主題不再獲取任何消息。
[0145]基于此,在執(zhí)行步驟102之前,如圖5所示,還包括:
[0146]111、判斷獲取的所述消息是否為控制消息。若確定獲取的所述消息不是控制消息,則執(zhí)行步驟102。否則執(zhí)行步驟112。
[0147]112、根據(jù)所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改。
[0148]其中,所述控制消息至少包括前述的Forward轉(zhuǎn)發(fā)指令、Copy復(fù)制指令、Subscription訂閱指令、Proxy代理指令四種指令。
[0149]113、存儲修改后的虛擬主題與實際主題之間的路由規(guī)則。
[0150]本發(fā)明實施例進一步提供的消息發(fā)布的方法,可以為訂閱者提供對消息中間件的動態(tài)控制功能,進一步保證了消息的準(zhǔn)確傳輸。
[0151]為了減少消息中間件內(nèi)消息傳輸?shù)牧髁?,?jié)省傳輸資源。消息中間件內(nèi)部可不傳輸發(fā)布者發(fā)送的具體消息,而是為每份具體消息生成一個標(biāo)識信息,并傳輸該標(biāo)識信息,具體參見圖6所示的方法流程,包括:
[0152]S101、獲取發(fā)布者已發(fā)送至與所述發(fā)布至對應(yīng)的虛擬主題的消息。
[0153]S102、生成與所述消息對應(yīng)的標(biāo)識信息。
[0154]S103、根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑。
[0155]S104、當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述標(biāo)識信息。
[0156]S105、當(dāng)與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息。
[0157]S106、將所述消息發(fā)送至傳輸路徑的終點對應(yīng)的訂閱者。
[0158]對應(yīng)于如圖3至圖6所示的消息發(fā)布的方法流程,本發(fā)明實施例提供了相應(yīng)的消息訂閱方法,如圖7所示,包括:
[0159]201、獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息。
[0160]其中,所述訂閱者發(fā)送的消息包括控制消息和模糊消息??刂葡⑹窃谟嗛喺呙鞔_知道自己想要訂閱哪一個或哪些主題時向消息中間件發(fā)送的消息,而模糊消息是訂閱者并不清楚自己想要訂閱的內(nèi)容屬于哪一個或哪些主題時發(fā)送的一段文字等消息。
[0161]202、根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題。
[0162]其中,此處描述路由規(guī)則的生成與維護與前述描述的內(nèi)容基本類似。
[0163]值得說明的是,針對201獲取到的消息類型步驟,步驟202的具體實現(xiàn)方式也不同,具體包括以下兩種:
[0164]如圖8所示的實現(xiàn)方式一,包括:
[0165]A2021、當(dāng)獲取的所述消息為控制消息時,根據(jù)所述控制消息獲取所述目的實際主題。
[0166]其中,控制消息與步驟111中描述的控制消息是同一個指令類型的不同功能。
[0167]A2022、創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與根據(jù)所述控制消息獲取到的目的實際主題之間的路由規(guī)則。
[0168]如圖9所示的實現(xiàn)方式二,包括:
[0169]B2021、當(dāng)獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則執(zhí)行步驟B2022。否則執(zhí)行步驟B2023。
[0170]B2022、創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與查找到的與所述語義解析結(jié)果匹配的實際主題之間的路由規(guī)則。
[0171]B2023、創(chuàng)建新的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與所述新的實際主題之間的路由規(guī)則。
[0172]本發(fā)明實施例提供的消息訂閱方法,訂閱者只需要建立所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則即可,在后續(xù)實際主題發(fā)生變化時,只需要消息中間件進行路由規(guī)則變更即可,訂閱者仍然可以從對應(yīng)的虛擬主題繼續(xù)接收消息,而不用做出任何改變。與現(xiàn)有技術(shù)中當(dāng)實際主題發(fā)生變化時,訂閱者必須要更改傳輸路徑才能將正確接收到想要的消息的技術(shù)方案相比,消息傳輸效率更高,傳輸路徑的靈活性更強。
[0173]并且,訂閱者可以根據(jù)自身需要通過控制消息或模糊消息來進行訂閱,增加了訂閱者的靈活性。
[0174]基于如圖2所示的信息中間件,本發(fā)明實施例提供了一種消息發(fā)布的方法,如圖10所示,包括:
[0175]301、獲取發(fā)布者已發(fā)送的消息。
[0176]302、對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。
[0177]303、若查找到與所述語義解析結(jié)果匹配的實際主題,則在已存儲的訂閱對應(yīng)關(guān)系中查找與所述實際主題對應(yīng)的訂閱者。
[0178]其中,基于語義解析結(jié)果的匹配方法可參照步驟105的有關(guān)描述。
[0179]304、若查找到所述實際主題對應(yīng)的訂閱者,則將所述獲取到的消息發(fā)送至所有查找到的訂閱者。
[0180]另外,如圖11所示,在若執(zhí)行步驟302后,未查找到與所述語義解析結(jié)果匹配的實際主題,則執(zhí)行305、創(chuàng)建新的實際主題,并存儲新創(chuàng)建的實際主題。
[0181]本發(fā)明實施例提供了一種消息發(fā)布的方法,可以在互聯(lián)網(wǎng)中使用,特別是移動互聯(lián)網(wǎng)某些領(lǐng)域,發(fā)布者或訂閱者可能不會關(guān)心具體的主題什么,是否存在的場景下。該方法可以直接根據(jù)發(fā)布者發(fā)送的消息進行語義識別,來推斷發(fā)布者可能想要發(fā)布的主題,使得發(fā)布者根據(jù)自己需要發(fā)布消息,進而加強了消息傳輸?shù)男屎挽`活性。
[0182]對應(yīng)于如圖10至圖11所示的消息發(fā)布的方法流程,本發(fā)明實施例提供了相應(yīng)的消息訂閱方法,如圖12所示,包括:
[0183]401、獲取訂閱者已發(fā)送的消息。
[0184]402、對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。
[0185]403、若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建查找到的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0186]另外,如圖13所示,在若執(zhí)行步驟402后,未查找到與所述語義解析結(jié)果匹配的實際主題,則執(zhí)行404、創(chuàng)建新的實際主題,并創(chuàng)建新創(chuàng)建的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0187]本發(fā)明實施例提供了一種消息訂閱的方法,可以在互聯(lián)網(wǎng)中使用,特別是移動互聯(lián)網(wǎng)某些領(lǐng)域,發(fā)布者或訂閱者可能不會關(guān)心具體的主題什么,是否存在的場景下。該方法可以直接根據(jù)訂閱者發(fā)送的消息進行語義識別,來推斷訂閱者可能想要訂閱的主題,使得訂閱者根據(jù)自己需要來訂閱消息。不需要知道具體的主題是什么,進而加強了消息傳輸?shù)男屎挽`活性。
[0188]進一步值得說明的是,如圖2所示的裝置結(jié)構(gòu)包含有實際主題,其設(shè)置目的在于將多種消息進行整合歸類到同一主題下。而在一些特殊的應(yīng)用場景中,例如微博,微信等場景,并不存在明確的發(fā)布者和訂閱者的劃分,每個用戶端都可以是消息的發(fā)布者和獲取者,并且消息發(fā)送的數(shù)量巨大很難進行分類,因此在這種場景下,不需要對消息進行整合分類,即如圖2所示的裝置結(jié)構(gòu)可以設(shè)置一個匹配模塊來替代原有的實際主題,將將用戶端發(fā)送到消息中間件內(nèi)的不同消息進行語義匹配,將成功匹配的多個用戶端的消息互相進行傳輸即可。
[0189]本發(fā)明提供了一種消息發(fā)布的裝置,可用于實現(xiàn)如圖3至圖6所示的消息發(fā)布的方法流程,如圖14所示,包括:
[0190]信息處理模塊51,用于獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消
肩、O
[0191]主題模塊52,用于根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述實際主題用于發(fā)布者和訂閱者之間的消息轉(zhuǎn)發(fā)。
[0192]傳輸模塊53,用于當(dāng)所述主題模塊52查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。其中,所述標(biāo)識信息用于使所述訂閱者對應(yīng)的虛擬主題能夠根據(jù)所述標(biāo)識信息獲取所述消息。
[0193]可選的是,如圖14所示,該裝置還包括:
[0194]語義識別模塊54,用于所述主題模塊52未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,對所述消息進行語義解析,得到語義解析結(jié)果,并根據(jù)所述語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。
[0195]路由規(guī)則生成模塊55,用于若所述語義識別模塊54查找到與所述語義解析結(jié)果匹配的實際主題,則生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則。
[0196]可選的是,所述主題模塊52,用于根據(jù)當(dāng)前所述路由規(guī)則生成模塊55已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑。
[0197]所述傳輸模塊53,還用于當(dāng)所述主題模塊52查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0198]可選的是,所述主題模塊52,還用于在未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題。
[0199]所述路由規(guī)則生成模塊55,還用于存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。
[0200]可選的是,所述信息處理模塊51,還用于判斷獲取的所述消息是否為控制消息,所述控制消息用于更新已存儲的虛擬主題與實際主題之間的路由規(guī)則。
[0201]所述主題模塊52,用于在所述信息處理模塊51確定獲取的所述消息不是控制消息,則根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑。
[0202]所述路由規(guī)則生成模塊55,還用于在所述信息處理模塊52確定獲取的所述消息是控制消息,則根據(jù)所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改;存儲修改后的虛擬主題與實際主題之間的路由規(guī)則。
[0203]可選的是,所述信息處理模塊51還用于生成與所述消息對應(yīng)的標(biāo)識信息。
[0204]所述傳輸模塊53,還用于當(dāng)所述與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息,并將與所述標(biāo)識信息對應(yīng)的消息發(fā)送至傳輸路徑的終點所對應(yīng)的訂閱者。
[0205]本發(fā)明實施例一種消息發(fā)布的裝置,可用于實現(xiàn)如圖9-10所示的消息發(fā)布的方法流程,如圖15所示,包括:
[0206]獲取模塊61,用于獲取發(fā)布者已發(fā)送的消息。
[0207]語義識別模塊62,用于對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。
[0208]主題模塊63,用于在查找到與所述語義解析結(jié)果匹配的實際主題時,在已存儲的訂閱對應(yīng)關(guān)系中,查找與所述實際主題對應(yīng)的訂閱者。
[0209]傳輸模塊64,用于在查找到所述實際主題對應(yīng)的訂閱者時,將所述獲取到的消息發(fā)送至所有查找到的訂閱者。
[0210]可選的是,所述主題模塊63,還用于在未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并存儲新創(chuàng)建的實際主題。
[0211]本發(fā)明實施例提供了一種消息訂閱的裝置,可用于實現(xiàn)如圖6-8所示的消息訂閱的方法流程,如圖16所示,包括:
[0212]獲取模塊71,用于獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息。
[0213]創(chuàng)建模塊72,用于根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述目的實際主題用于訂閱者對應(yīng)的虛擬主題之間的消息轉(zhuǎn)發(fā)。
[0214]可選的是,如圖17所示,所述創(chuàng)建模塊72包括:
[0215]第一主題子模塊721,用于當(dāng)獲取的所述消息為控制消息時,根據(jù)所述控制消息獲取所述目的實際主題,所述控制消息用于更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規(guī)則;以及用于更新所述訂閱者對應(yīng)的虛擬主題與根據(jù)所述控制消息獲取到的目的實際主題之間的路由規(guī)則。
[0216]可選的是,如圖18所示,所述創(chuàng)建模塊72包括:
[0217]語義識別子模塊722,用于當(dāng)獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。
[0218]第二主題子模塊723,用于在在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題時,將查找到的實際主題作為目的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與查找到的與所述語義解析結(jié)果匹配的實際主題之間的路由規(guī)則。
[0219]可選的是,所述第二主題子模塊723,還用于在在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則。
[0220]本發(fā)明實施例還提供了一種消息訂閱的裝置,可用于實現(xiàn)如圖11-12所示的消息訂閱的方法流程,如圖19所示,包括:
[0221 ] 獲取模塊81,用于獲取訂閱者已發(fā)送的消息。
[0222]語義識別模塊82,用于對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題。
[0223]主題模塊83,用于在在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建查找到的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0224]可選的是,所述主題模塊83還用于在在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并創(chuàng)建新創(chuàng)建的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0225]本發(fā)明實施例提供的消息發(fā)布與訂閱的裝置,通過為發(fā)布者以及訂閱者在消息中間件中設(shè)置相應(yīng)的虛擬主題,或者通過對發(fā)布者以及訂閱者向消息中間件進行語義識別,以保證發(fā)布者以及訂閱者不需要獲知實際主題的具體結(jié)構(gòu)的情況下,仍然保證消息被正確地傳輸。相比于現(xiàn)有技術(shù)中,當(dāng)消息中間件中的主題發(fā)生變化時,發(fā)布者以及訂閱者必須要獲知的變更結(jié)果并主動修改路由規(guī)則才能完成數(shù)據(jù)傳輸?shù)募夹g(shù)方案來講,本發(fā)明實施例提供的技術(shù)方案消息傳輸效率更高,靈活性更強。
[0226]本發(fā)明實施例提供了一種消息中間件,如圖20所示,包括至少一個處理器91、存儲器92以及輸入輸出電路93。所述存儲器92被配置有程序代碼,所述處理器91用于調(diào)用存儲器92內(nèi)的程序代碼用以實現(xiàn)如圖3至圖8所示的消息發(fā)布與訂閱的方法流程。所述存儲器92和處理器91之間通過總線通信。
[0227]其中,所述輸入輸出電路93用于獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消息;以及當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;以及當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。其中,所述標(biāo)識信息用于使所述訂閱者對應(yīng)的虛擬主題能夠根據(jù)所述標(biāo)識信息獲取所述消息。
[0228]處理器91用于根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述實際主題用于發(fā)布者和訂閱者之間的消息轉(zhuǎn)發(fā)。
[0229]所述存儲器92用于存儲虛擬主題與實際主題之間的路由規(guī)則。
[0230]所述處理器91還用于當(dāng)未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,得到語義解析結(jié)果,并根據(jù)所述語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;若查找到與所述語義解析結(jié)果匹配的實際主題,則生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則。
[0231]所述處理器91還用于根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑。
[0232]所述輸入輸出電路93還用于當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
[0233]所述處理器91還用于若未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。
[0234]所述處理器91還用于判斷獲取的所述消息是否為控制消息,所述控制消息用于更新已存儲的虛擬主題與實際主題之間的路由規(guī)則;若獲取的所述消息不是控制消息,則執(zhí)行根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑的步驟;若確定獲取的所述消息是控制消息,則根據(jù)所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改。
[0235]所述存儲器92還用于存儲修改后的虛擬主題與實際主題之間的路由規(guī)則。
[0236]所述處理器91還用于生成與所述消息對應(yīng)的標(biāo)識信息;根據(jù)查找到的所有傳輸路徑,傳輸與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息,并將與所述標(biāo)識信息對應(yīng)的消息發(fā)送至傳輸路徑的終點所對應(yīng)的訂閱者。
[0237]所述輸入輸出電路93還用于獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息。
[0238]所述處理器91還用于根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述目的實際主題用于訂閱者對應(yīng)的虛擬主題之間的消息轉(zhuǎn)發(fā)。
[0239]所述處理器91還用于當(dāng)獲取的所述消息為控制消息時,根據(jù)所述控制消息獲取目的實際主題,所述控制消息用于更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規(guī)則;創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與根據(jù)所述控制消息獲取到的目的實際主題之間的路由規(guī)則。
[0240]所述處理器91還用于當(dāng)獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與查找到的與所述語義解析結(jié)果匹配的實際主題之間的路由規(guī)則。
[0241]所述處理器91還用于若在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與所述新的實際主題之間的路由規(guī)則。
[0242]本發(fā)明實施例還提供了一種消息中間件,如圖21所示,包括至少一個處理器1001、存儲器1002、輸入輸出電路1003。所述存儲器1002被配置有程序代碼,所述處理器1001用于調(diào)用存儲器1002內(nèi)的程序代碼用以實現(xiàn)如圖9至圖12所示的消息發(fā)布與訂閱的方法流程。所述存儲器1002和處理器1001之間通過總線通信。
[0243]所述處理器1001用于獲取發(fā)布者已發(fā)送的消息;對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;若查找到與所述語義解析結(jié)果匹配的實際主題,則在已存儲的訂閱對應(yīng)關(guān)系中,查找與所述實際主題對應(yīng)的訂閱者;若查找到所述實際主題對應(yīng)的訂閱者,則將所述獲取到的消息發(fā)送至所有查找到的訂閱者。
[0244]所述處理器1001還用于若未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并存儲新創(chuàng)建的實際主題。
[0245]所述處理器1001還用于獲取訂閱者已發(fā)送的消息;對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題;若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建查找到的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0246]所述處理器1001還用于若在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并創(chuàng)建新創(chuàng)建的實際主題與所述訂閱者的訂閱對應(yīng)關(guān)系。
[0247]通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
[0248]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。
【權(quán)利要求】
1.一種消息發(fā)布的方法,其特征在于,包括: 獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消息; 根據(jù)已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的所有傳輸路徑;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述實際主題用于發(fā)布者和訂閱者之間的消息轉(zhuǎn)發(fā); 當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息; 當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點后,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,得到語義解析結(jié)果,并根據(jù)所述語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題; 若查找到與所述語義解析結(jié)果匹配的實際主題,則生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的實際主題之間的路由規(guī)則之后,還包括: 根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑; 當(dāng)查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息; 當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,還包括: 若未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 獲取所述發(fā)布者發(fā)送的控制消息,所述控制消息用于更新已存儲的虛擬主題與實際主題之間的路由規(guī)則; 根據(jù)所述控制消息,對當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改,并存儲修改后的路由規(guī)則。
6.根據(jù)權(quán)利要求1至5任意一項所述的方法,其特征在于,在查找到的傳輸路徑上,傳輸與所述消息對應(yīng)的標(biāo)識信息之前,還包括: 生成與所述消息對應(yīng)的標(biāo)識信息; 相應(yīng)地,所述當(dāng)所述與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者,包括:當(dāng)與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息,并將與所述標(biāo)識信息對應(yīng)的消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
7.—種消息發(fā)布的方法,其特征在于,包括: 獲取發(fā)布者已發(fā)送的消息; 對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題; 若查找到與所述語義解析結(jié)果匹配的實際主題,則在已存儲的訂閱關(guān)系表中,查找與所述實際主題對應(yīng)的訂閱者; 若查找到所述實際主題對應(yīng)的訂閱者,則將所述獲取到的消息發(fā)送至查找到的所有訂閱者。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括: 若未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并存儲創(chuàng)建的所述實際主題。
9.一種消息訂閱的方法,其特征在于,包括: 獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息; 根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)貝U,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述根據(jù)獲取的所述消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,包括: 當(dāng)獲取的所述消息為控制消息時,根據(jù)所述控制消息確定所述訂閱者訂閱的實際主題,并將所述訂閱者訂閱的實際主題作為目的實際主題,所述控制消息包含所述訂閱者訂閱的實際主題的消息; 創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與所述目的實際主題之間的路由規(guī)則。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,還包括: 當(dāng)獲取的所述消息不為控制消息時,對所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題; 若在已存儲的實際主題中查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與查找到的與所述語義解析結(jié)果匹配的實際主題之間的路由規(guī)則。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,還包括: 若在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題,則創(chuàng)建新的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與所述新的實際主題之間的路由規(guī)則。
13.一種消息發(fā)布的裝置,其特征在于,包括: 信息處理模塊, 用于獲取發(fā)布者已發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消息; 主題模塊,用于根據(jù)已存儲的虛擬主題與所述消息發(fā)布的裝置包含的各個實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的所有傳輸路徑;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā);所述實際主題用于發(fā)布者和訂閱者之間的消息轉(zhuǎn)發(fā);傳輸模塊,用于當(dāng)所述主題模塊查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,還包括: 語義識別模塊,用于當(dāng)所述主題模塊未查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,對所述消息進行語義解析,得到語義解析結(jié)果,并根據(jù)所述語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題; 路由規(guī)則生成模塊,用于若所述語義識別模塊查找到與所述語義解析結(jié)果匹配的實際主題,則生成并存儲所述發(fā)布者對應(yīng)的虛擬主題與查找到的所述實際主題之間的路由規(guī)則。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述主題模塊,具體用于根據(jù)當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則,查找以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑; 所述傳輸模塊,具體用于當(dāng)所述主題模塊查找到以所述發(fā)布者對應(yīng)的虛擬主題為起點,并且以任意一個訂閱者對應(yīng)的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上或與所述消息對應(yīng)的標(biāo)識信息;當(dāng)所述消息或與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,將所述消息發(fā)送至該傳輸路徑的終點所對應(yīng)的訂閱者。
16.根據(jù)權(quán)利要求14或15所述的裝置,其特征在于,所述主題模塊,還用于在未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題; 所述路由規(guī)則生成模塊,還用于存儲所述發(fā)布者對應(yīng)的虛擬主題與新創(chuàng)建的實際主題之間的路由規(guī)則。`
17.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述信息處理模塊,還用于獲取發(fā)布者發(fā)送的控制消息,所述控制消息用于更新已存儲的虛擬主題與實際主題之間的路由規(guī)則; 所述路由規(guī)則生成模塊,還用于根據(jù)所述控制消息,對當(dāng)前已存儲的虛擬主題與實際主題之間的路由規(guī)則進行修改,并存儲修改后的路由規(guī)則。
18.根據(jù)權(quán)利要求13至17任意一項所述的裝置,其特征在于,所述信息處理模塊還用于,在獲取發(fā)布者發(fā)送至與所述發(fā)布者對應(yīng)的虛擬主題的消息之后,生成與所述消息對應(yīng)的標(biāo)識信息; 所述傳輸模塊,具體用于當(dāng)所述與所述消息對應(yīng)的標(biāo)識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標(biāo)識信息對應(yīng)的消息,并將與所述標(biāo)識信息對應(yīng)的消息發(fā)送至傳輸路徑的終點所對應(yīng)的訂閱者。
19.一種消息發(fā)布的裝置,其特征在于,包括: 獲取模塊,用于獲取發(fā)布者發(fā)送的消息; 語義識別模塊,用于對獲取到的消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題; 主題模塊,用于在查找到與所述語義解析結(jié)果匹配的實際主題時,在已存儲的訂閱關(guān)系表中,查找與所述實際主題對應(yīng)的訂閱者;傳輸模塊,用于在查找到所述實際主題對應(yīng)的訂閱者時,將所述獲取到的消息發(fā)送至查找到的所有訂閱者。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述主題模塊,還用于在未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題,并存儲創(chuàng)建的所述實際主題。
21.一種消息訂閱的裝置,其特征在于,包括: 獲取模塊,用于獲取訂閱者已發(fā)送至所述訂閱者對應(yīng)的虛擬主題的消息; 創(chuàng)建模塊,用于根據(jù)獲取到的訂閱者發(fā)送的消息,創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與目的實際主題之間的路由規(guī)則,所述目的實際主題為所述訂閱者當(dāng)前訂閱的實際主題;其中,所述虛擬主題用于實際主題和發(fā)布者之間的消息轉(zhuǎn)發(fā)或者實際主題和訂閱者之間的消息轉(zhuǎn)發(fā)。
22.根據(jù)權(quán)利要求21所述的裝置,其特征在于,所述創(chuàng)建模塊包括: 第一主題子模塊,用于當(dāng)獲取到的所述消息為控制消息時,根據(jù)所述控制消息確定所述訂閱者訂閱的實際主題,并將所述訂閱者訂閱的實際主題作為所述目的實際主題,所述控制消息包含所述訂閱者訂閱的實際主題的消息; 路由規(guī)則模塊,用于更新所述訂閱者對應(yīng)的虛擬主題與所述目的實際主題之間的路由規(guī)則。
23.根據(jù)權(quán)利要求22所述的裝置,其特征在于,所述第一主題子模塊,還用于當(dāng)獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,并根據(jù)語義解析結(jié)果,在已存儲的實際主題中查找與所述語義解析結(jié)果匹配的實際主題,并在查找到與所述語義解析結(jié)果匹配的實際主題時,將查找到的實際主題作為目的實際主題。
24.根據(jù)權(quán)利要求23所述的裝置,其特征在于,所述創(chuàng)建模塊,還用于當(dāng)所述第一主題子模塊在已存儲的實際主題中未查找到與所述語義解析結(jié)果匹配的實際主題時,創(chuàng)建新的實際主題作為目的實際主題,并創(chuàng)建所述訂閱者對應(yīng)的虛擬主題與所述新的實際主題之間的路由規(guī)則。
【文檔編號】H04L12/58GK103534988SQ201380000499
【公開日】2014年1月22日 申請日期:2013年6月3日 優(yōu)先權(quán)日:2013年6月3日
【發(fā)明者】方元, 唐冠軍, 王云鵬 申請人:華為技術(shù)有限公司