新四季網

消息發布與訂閱的方法及裝置製造方法

2023-05-29 06:20:51 2

消息發布與訂閱的方法及裝置製造方法
【專利摘要】本發明提供了一種消息發布與訂閱的方法及裝置,涉及信息處理領域,主要通過為發布者以及訂閱者在消息中間件中設置相應的虛擬主題,或者通過對發布者以及訂閱者向消息中間件進行語義識別,用以提供更高的信息傳輸效率和更強的靈活性。
【專利說明】消息發布與訂閱的方法及裝置
【技術領域】
[0001]本發明涉及信息處理領域,尤其涉及一種消息發布與訂閱的方法及裝置。
【背景技術】
[0002]消息中間件利用高效可靠的消息傳遞機制進行與平臺無關的數據交流,通過提供消息傳遞和消息排隊模型,它可以在分布式環境下擴展進程間的通信。
[0003]在消息中間件的消息傳輸模式中,發布/訂閱模式是最常用的傳輸機制。發布者和訂閱者之間通過主題交換信息:發布者把消息發布到相關主題,訂閱者在該主題上註冊並接收該主題上的信息,通過這種方式主題把發布者和訂閱者連接起來。
[0004]傳統的發布/訂閱系統的消息路由方式是一種基於內容和地址相結合的路由方式,在這種路由體系下,首先根據主題內容,並結合預先收集的訂閱者,來確定關於同一個主題的消息有或者沒有哪些感興趣的訂閱者,以及這些訂閱者的目的地伺服器和接收隊列,然後,再通過靜態路由體系確定該消息將被分發至哪些本地接收隊列和下一個路由節點。所以在這種路由體系下,發布者與訂閱者之間傳輸的消息必須攜帶一個主題。
[0005]然而,主題的改變,例如主題的名稱或者類別的改變,都會影響消息路由的目的地,而發布者或訂閱者必須知道這些改變才能發布或訂閱到正確的主題上。在大規模應用的場景下,特別是在網際網路環境的情況下,這種改變會引發發布者或訂閱者大的改變和不必要的網絡開銷。

【發明內容】

[0006]本發明的實施例提供一種消息發布與訂閱的方法及裝置,以提供更高的信息傳輸效率,和更強的靈活性。
[0007]為達到上述目的,本發明的實施例採用如下技術方案:
[0008]第一方面,本發明提供了一種消息發布的方法,包括:
[0009]獲取發布者已發送至與所述發布者對應的虛擬主題的消息;
[0010]根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述實際主題用於發布者和訂閱者之間的消息轉發;
[0011]當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;
[0012]當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0013]結合第一方面,在第一方面的第一種可能實現方式中,還包括:
[0014]當未查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,得到語義解析結果,並根據所述語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0015]若查找到與所述語義解析結果匹配的實際主題,則生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則。
[0016]結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,在所述生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則之後,還包括:
[0017]根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;
[0018]當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;
[0019]當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0020]結合第一方面的第一種或第二種可能實現方式,在第三種可能實現方式中,還包括:
[0021]若未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並生成並存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。
[0022]結合第一方面,在第四種可能實現方式中,在根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑之前,還包括:
[0023]判斷獲取的所述消息是否為控制消息,所述控制消息用於更新已存儲的虛擬主題與實際主題之間的路由規則;
[0024]若獲取的所述消息不是控制消息,則執行根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑的步驟;
[0025]若確定獲取的所述消息是控制消息,則根據所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規則進行修改;存儲修改後的虛擬主題與實際主題之間的路由規則。
[0026]結合第一方面或第一方面的前四種可能實現方式中的任意一種,在第五種可能的實現方式中,在所述根據查找到的所有傳輸路徑,傳輸所述消息的標識信息之前,還包括:
[0027]生成與所述消息對應的標識信息;
[0028]則當所述消息的標識信息傳輸至每一條傳輸路徑的終點時,將該發布者發送的消息發送至傳輸路徑的終點所對應的訂閱者包括:
[0029]當所述消息的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息,並將與所述標識信息對應的消息發送至傳輸路徑的終點所對應的訂閱者。
[0030]第二方面,本發明提供了一種消息發布的方法,包括:
[0031]獲取發布者已發送的消息;
[0032]對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;[0033]若查找到與所述語義解析結果匹配的實際主題,則在已存儲的訂閱對應關係中,查找與所述實際主題對應的訂閱者;
[0034]若查找到所述實際主題對應的訂閱者,則將所述獲取到的消息發送至所有查找到的訂閱者。
[0035]結合第二方面,在第一種可能實現方式中,還包括:
[0036]若未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並存儲新創建的實際主題。
[0037]第三方面,本發明提供了一種消息訂閱的方法,包括:
[0038]獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息;
[0039]根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,所述目的實際主題為所述訂閱者當前訂閱的實際主題;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述目的實際主題用於訂閱者對應的虛擬主題之間的消息轉發。
[0040]結合第三方面,在第一種可能實現方式中,所述根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則包括:
[0041]當獲取的所述消息為控制消息時,根據所述控制消息獲取目的實際主題,所述控制消息用於更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規則;
[0042]創建所述訂閱者對應的虛擬主題與根據所述控制消息獲取到的目的實際主題之間的路由規則。
[0043]結合第三方面的第一種可能的實現方式,在第二種可能的實現方式中,所述根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則包括:
[0044]當獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0045]若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則創建所述訂閱者對應的虛擬主題與查找到的與所述語義解析結果匹配的實際主題之間的路由規則。
[0046]結合第三方面的第二種可能實現方式,在第三種可能實現方式中,還包括:
[0047]若在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則。
[0048]第四方面,本發明提供了一種消息訂閱的方法,包括:
[0049]獲取訂閱者已發送至與所述訂閱者對應的虛擬主題的消息;
[0050]對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0051]若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則創建查找到的實際主題與所述訂閱者的訂閱對應關係。
[0052]結合第四方面,在第一種可能實現方式中,還包括:
[0053]若在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並創建新創建的實際主題與所述訂閱者的訂閱對應關係。
[0054]第五方面,本發明提供了一種消息發布的裝置,包括:[0055]信息處理模塊,用於獲取發布者已發送至與所述發布者對應的虛擬主題的信息;
[0056]主題模塊,用於根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述實際主題用於發布者和訂閱者之間的消息轉發;
[0057]傳輸模塊,用於當所述主題模塊查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0058]結合第五方面,在第五方面的第一種可能實現方式中,還包括:
[0059]語義識別模塊,用於當所述主題模塊未查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,對所述消息進行語義解析,得到語義解析結果,並根據所述語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0060]所述路由規則生成模塊,用於若所述語義識別模塊查找到與所述語義解析結果匹配的實際主題,則生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則。
[0061]結合第一方面的第一種可能的實現方式,在第二種可能的實現方式,所述主題模塊,用於根據當前所述路由規則生成模塊已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;
[0062]所述傳輸模塊,還用於當所述主題模塊查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0063]結合第五方面的第一種或第二種可能實現方式,在第三種可能實現方式中,所述主題模塊,還用於在未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題;
[0064]所述路由規則生成模塊,還用於存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。
[0065]結合第五方面,在第三種可能實現方式中,所述信息處理模塊,還用於判斷獲取的所述消息是否為控制消息,所述控制消息用於更新已存儲的虛擬主題與實際主題之間的路由規則;
[0066]所述主題模塊,用於在所述信息處理模塊確定獲取的所述消息不是控制消息,則根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;
[0067]所述路由規則生成模塊,還用於若所述信息處理模塊確定獲取的所述消息是控制消息,則根據所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規則進行修改;存儲修改後的虛擬主題與實際主題之間的路由規則。[0068]結合第三方面或第三方面的前四種可能的實現方式中的任意一種,在第五種可能的實現方式中,所述信息處理模塊還用於生成與所述消息對應的標識信息;
[0069]所述傳輸模塊,還用於當所述與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息,並將與所述標識信息對應的消息發送至傳輸路徑的終點所對應的訂閱者。
[0070]第六方面,本發明提供了一種消息發布的裝置,包括:
[0071]獲取模塊,用於獲取發布者已發送的消息;
[0072]語義識別模塊,用於對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0073]主題模塊,用於在查找到與所述語義解析結果匹配的實際主題時,在已存儲的訂閱對應關係中,查找與所述實際主題對應的訂閱者;
[0074]傳輸模塊,用於在查找到所述實際主題對應的訂閱者時,將所述獲取到的消息發送至所有查找到的訂閱者。
[0075]結合第六方面,在第一種可能實現方式中,所述主題模塊,還用於在未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並存儲新創建的實際主題。
[0076]第七方面,本發明提供了一種消息訂閱的裝置,包括:
[0077]獲取模塊,用於獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息;
[0078]創建模塊,用於根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,所述目的實際主題為所述訂閱者當前訂閱的實際主題;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述目的實際主題用於訂閱者對應的虛擬主題之間的消息轉發。
[0079]結合第七方面,在第一種可能實現方式中,所述創建模塊包括:
[0080]第一主題子模塊,用於當獲取的所述消息為控制消息時,根據所述控制消息獲取所述目的實際主題,所述控制消息用於更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規則;以及用於更新所述訂閱者對應的虛擬主題與根據所述控制消息獲取到的目的實際主題之間的路由規則。
[0081]結合第七方面,在第二種可能實現方式中,所述創建模塊包括:
[0082]語義識別子模塊,用於當獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0083]第二主題子模塊,用於在在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題時,將查找到的實際主題作為目的實際主題,並創建所述訂閱者對應的虛擬主題與查找到的與所述語義解析結果匹配的實際主題之間的路由規則。
[0084]結合第七方面的第二種可能實現方式,在第三種可能實現方式中,所述第二主題子模塊,還用於在在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則。
[0085]第八方面,本發明提供了一種消息訂閱的裝置,包括:
[0086]獲取模塊,用於獲取訂閱者已發送的消息;[0087]語義識別模塊,用於對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;
[0088]主題模塊,用於在在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題時,創建查找到的實際主題與所述訂閱者的訂閱對應關係。
[0089]結合第八方面,在第一種可能實現方式中,所述主題模塊還用於在在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並創建新創建的實際主題與所述訂閱者的訂閱對應關係。
[0090]本發明實施例提供的消息發布與訂閱的方法,通過為發布者以及訂閱者在消息中間件中設置相應的虛擬主題,或者通過對發布者以及訂閱者向消息中間件進行語義識別,以保證發布者以及訂閱者不需要獲知實際主題的具體結構的情況下,仍然保證信息被正確地傳輸。相比於現有技術中,當消息中間件中的主題發生變化時,發布者以及訂閱者必須要獲知的變更結果並主動修改路由規則才能完成數據傳輸的技術方案來講,本發明實施例提供的技術方案信息傳輸效率更高,靈活性更強。
【專利附圖】

【附圖說明】
[0091]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0092]圖1為本發明實施例提供的一種消息中間件的組成框圖;
[0093]圖2為本發明實施例提供的另一種消息中間件的組成框圖;
[0094]圖3為本發明實施例提供的一種消息發布的方法流程圖;
[0095]圖4為本發明實施例提供的另一種消息發布的方法流程圖;
[0096]圖5為本發明實施例提供的另一種消息發布的方法流程圖;
[0097]圖6為本發明實施例提供的另一種消息發布的方法流程圖;
[0098]圖7為本發明實施例提供的一種消息訂閱的方法流程圖;
[0099]圖8為本發明實施例提供的另一種消息訂閱的方法流程圖;
[0100]圖9為本發明實施例提供的另一種消息訂閱的方法流程圖;
[0101]圖10為本發明實施例提供的一種消息發布的方法流程圖;
[0102]圖11為本發明實施例提供的另一種消息發布的方法流程圖;
[0103]圖12為本發明實施例提供的另一種消息訂閱的方法流程圖;
[0104]圖13為本發明實施例提供的另一種消息訂閱的方法流程圖;
[0105]圖14為本發明實施例提供的一種消息發布的裝置的組成框圖;
[0106]圖15為本發明實施例提供的另一種消息發布的裝置的組成框圖;
[0107]圖16為本發明實施例提供的另一種消息發布的裝置的組成框圖;
[0108]圖17為本發明實施例提供的另一種消息訂閱的裝置的組成框圖;
[0109]圖18為本發明實施例提供的另一種消息訂閱的裝置的組成框圖;
[0110]圖19為本發明實施例提供的另一種消息訂閱的裝置的組成框圖;
[0111]圖20為本發明實施例提供的另一種消息訂閱的裝置的組成框圖;[0112]圖21為本發明實施例提供的另一種消息中間件的組成框圖;
[0113]圖22為本發明實施例提供的另一種消息中間件的組成框圖。
【具體實施方式】
[0114]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0115]本發明實施例提供的兩種消息中間件(message broker )的組成結構圖,用以實現本發明實施例提供的消息發布與訂閱的方法,一般以可運行於作業系統和應用軟體之間的軟體形式存在,用於進行多個作業系統之間、多個應用軟體之間以及作業系統和應用軟體之間的信息傳輸。
[0116]圖1為本發明實施例提供的消息中間件的一種實現方式的組成結構圖,在此結構中,對應於消息中間件外的每個發布者和訂閱者,都各自設置有一個虛擬主題,該虛擬主題的作用相當於發布者或訂閱者在消息中間件中的映射設備,具有查找下一跳實際主題和轉發消息的功能。具體的,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發。
[0117]虛擬主題和發布者之間以及虛擬主題與訂閱者之間都設置有一個信息處理模塊,該信息處理模塊主要用於對發布者或訂閱者發送到消息中間件的消息進行識別,和生成與對發布者或訂閱者發送到消息中間件的消息相對應的標識信息。
[0118]信息處理模塊還連接有路由規則生成模塊和存儲適配模塊。路由規則生成模塊用於生成虛擬主題和實際主題之間的路由規則,存儲適配模塊用於存儲發布者或訂閱者發送到消息中間件的消息。
[0119]路由規則生成模塊和存儲適配模塊都連接到路由模塊,路由模塊用於存儲虛擬主題和實際主題之間的路由規則。
[0120]消息中間件中還設置有實際主題,該實際主題根據虛擬主題和實際主題之間的路由規則,與若干個虛擬主題建立邏輯連接關係,具有查找下一跳實際主題或下一跳虛擬主題和轉發消息的功能。,具體的,所述實際主題用於發布者對應的虛擬主題和訂閱者對應的虛擬主題之間的消息轉發實際主題也連接到路由模塊中。實際主題結構可以採用現有技術常用的樹形結構,也可以使用其他的結構,本發明實施例對此不進行限制。
[0121]消息中間件中還設置有由語義解析模塊和語義匹配模塊組成的語義識別模塊,該語義識別模塊與虛擬主題、路由規則生成模塊以及存儲適配器相連。
[0122]圖2為本發明實施例提供的消息中間件的另一種實現方式的組成結構圖,該結構中,消息中間件僅具有實際主題、由語義解析模塊和語義匹配模塊組成的語義識別模塊和存儲適配器。其中,實際主題與消息中間件外部的訂閱者以及語義識別模塊相連,語義識別模塊可以與實際主題、消息中間件外部的訂閱者、消息中間件外部的發布者以及存儲適配器相連。各個模塊的功能與圖1所示的模塊功能基本相同。
[0123]基於圖1所示的信息中間件,本發明實施例提供了一種消息訂閱的方法,如圖3所示,包括:[0124]101、獲取發布者已發送至與所述發布者對應的虛擬主題的消息。
[0125]其中,發布者和後續描述的訂閱者一般為手機、PC、伺服器等終用戶終端設備。
[0126]102、根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑。
[0127]其中,已存儲的虛擬主題與實際主題之間的路由規則用於表示虛擬主題和實際主題之間的消息傳輸關係,可以由發布者、訂閱者或者網絡管理員事先進行設置的,或者是在消息中間件工作時實時更新的。
[0128]103、當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息。
[0129]其中,標識信息的生成可以是消息中間件為發布者發送的消息分配的唯一的標識信息,具體的分配方法可以使用順序排列標號、哈希計算標號等多種方法。此時發布者發送的消息一般需要存儲在一個獨立的存儲器件中,例如,本發明實施例提供的存儲適配器。該標識信息主要是用於使所述訂閱者對應的虛擬主題能夠根據所述標識信息獲取所述消息
[0130]104、當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0131]本發明實施例提供了一種消息發布的方法,在該方法中,發布者可根據自身需要向消息中間件中與自身對應的虛擬主題發送消息,就可以由消息中間件根據自身內部存儲的虛擬主題與實際主題之間的路由規則相應的傳輸路徑,並將發布者發送的消息發送至相應的訂閱者,從而使得當實際主題發生變化時,只需要由消息中間件的內部對存儲的虛擬主題與實際主題之間的路由規則進行修改即可,發布者仍可以向與消息中間件中與自身對應的虛擬主題繼續發送消息,而不用做出任何改變。與現有技術中當實際主題發生變化時,發布者必須要更改傳輸路徑才能將消息正確傳輸的技術方案相比,消息傳輸效率更高,傳輸路徑的靈活性更強。
[0132]進一步的,在如圖3所示的方法流程的基礎上,本發明實施例還提供了另一種消息發布的方法,如圖4所示,執行於步驟102之後,包括:
[0133]105、當未查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。若查找到與所述語義解析結果匹配的實際主題,則執行步驟106。否則執行步驟110。
[0134]其中,由於實際主題就是用於連接消息發布訂閱者的實際主題,其定義方式與現有技術基本相同,因此,每個實際主題一般都對應有相應的字符串、標號等可以用於文字或語義匹配的主題標識,對發布者發送的消息進行語義解析之後,會將消息解析成一系列的關鍵字。通過這些關鍵字可以與所有實際主題各自對應的主題標識進行模糊匹配,例如字符串匹配等,用以確定這個消息最可能的傳輸方向或路徑。
[0135]106、生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則。
[0136]107、根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑。[0137]108、當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息。
[0138]值得說明的是,若此時仍查找不到所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑,則說明此時查找到的實際主題尚無人訂閱,因此,直接將該發布者發送的消息進行存儲即可,不需要再繼續發送。
[0139]109、當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0140]110、創建新的實際主題,並生成並存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。
[0141]在執行步驟110後,不需要將消息繼續進行傳輸,其原因為:若已存儲的實際主題中並不存在發布者發送的消息對應的實際主題,說明此時還沒有任何訂閱者訂閱了此主題。
[0142]本發明實施例進一步提供的消息發布的方法,在無法查找到相應的傳輸路徑時,對發布者發送的消息進行語義識別,用以匹配與該消息最相近的實際主題,從而建立全新的數據傳輸路徑,以保證消息的正常準確地發布。進一步地讓發布者可以完全根據自身需要去發送消息。消息中間件都能夠讓消息得到正確的傳輸。
[0143]進一步的,為了方便發布者對消息傳輸路徑的控制,因此,本發明一實施例為發布者提供了控制消息,用以修改和刪除消息中間件內已存儲的原有路由規則或添加新的路由規則。控制消息可以包括=Forward轉發指令、Copy複製指令、Subscription訂閱指令、Proxy代理指令。Forward指令用於控制路由規則從一個主題完全遷移到同一消息中間件內的另外一個主題,原主題不再獲取任何消息。Copy指令用於在保證除了原有獲取消息的主題仍獲取消息以外,還將作為消息來源的主題與指令指定的其它多個主題建立路由規則。
[0144]Subscription指令用於建立實際主題與訂閱者對應的虛擬主題之間的路由規則。Proxy指令用於將路由規則從一個主題完全遷移到另外一個不同的消息中間件內中的一個主題,原主題不再獲取任何消息。
[0145]基於此,在執行步驟102之前,如圖5所示,還包括:
[0146]111、判斷獲取的所述消息是否為控制消息。若確定獲取的所述消息不是控制消息,則執行步驟102。否則執行步驟112。
[0147]112、根據所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規則進行修改。
[0148]其中,所述控制消息至少包括前述的Forward轉發指令、Copy複製指令、Subscription訂閱指令、Proxy代理指令四種指令。
[0149]113、存儲修改後的虛擬主題與實際主題之間的路由規則。
[0150]本發明實施例進一步提供的消息發布的方法,可以為訂閱者提供對消息中間件的動態控制功能,進一步保證了消息的準確傳輸。
[0151]為了減少消息中間件內消息傳輸的流量,節省傳輸資源。消息中間件內部可不傳輸發布者發送的具體消息,而是為每份具體消息生成一個標識信息,並傳輸該標識信息,具體參見圖6所示的方法流程,包括:
[0152]S101、獲取發布者已發送至與所述發布至對應的虛擬主題的消息。
[0153]S102、生成與所述消息對應的標識信息。
[0154]S103、根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑。
[0155]S104、當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述標識信息。
[0156]S105、當與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息。
[0157]S106、將所述消息發送至傳輸路徑的終點對應的訂閱者。
[0158]對應於如圖3至圖6所示的消息發布的方法流程,本發明實施例提供了相應的消息訂閱方法,如圖7所示,包括:
[0159]201、獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息。
[0160]其中,所述訂閱者發送的消息包括控制消息和模糊消息。控制消息是在訂閱者明確知道自己想要訂閱哪一個或哪些主題時向消息中間件發送的消息,而模糊消息是訂閱者並不清楚自己想要訂閱的內容屬於哪一個或哪些主題時發送的一段文字等消息。
[0161]202、根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,所述目的實際主題為所述訂閱者當前訂閱的實際主題。
[0162]其中,此處描述路由規則的生成與維護與前述描述的內容基本類似。
[0163]值得說明的是,針對201獲取到的消息類型步驟,步驟202的具體實現方式也不同,具體包括以下兩種:
[0164]如圖8所示的實現方式一,包括:
[0165]A2021、當獲取的所述消息為控制消息時,根據所述控制消息獲取所述目的實際主題。
[0166]其中,控制消息與步驟111中描述的控制消息是同一個指令類型的不同功能。
[0167]A2022、創建所述訂閱者對應的虛擬主題與根據所述控制消息獲取到的目的實際主題之間的路由規則。
[0168]如圖9所示的實現方式二,包括:
[0169]B2021、當獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則執行步驟B2022。否則執行步驟B2023。
[0170]B2022、創建所述訂閱者對應的虛擬主題與查找到的與所述語義解析結果匹配的實際主題之間的路由規則。
[0171]B2023、創建新的實際主題,並創建所述訂閱者對應的虛擬主題與所述新的實際主題之間的路由規則。
[0172]本發明實施例提供的消息訂閱方法,訂閱者只需要建立所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則即可,在後續實際主題發生變化時,只需要消息中間件進行路由規則變更即可,訂閱者仍然可以從對應的虛擬主題繼續接收消息,而不用做出任何改變。與現有技術中當實際主題發生變化時,訂閱者必須要更改傳輸路徑才能將正確接收到想要的消息的技術方案相比,消息傳輸效率更高,傳輸路徑的靈活性更強。
[0173]並且,訂閱者可以根據自身需要通過控制消息或模糊消息來進行訂閱,增加了訂閱者的靈活性。
[0174]基於如圖2所示的信息中間件,本發明實施例提供了一種消息發布的方法,如圖10所示,包括:
[0175]301、獲取發布者已發送的消息。
[0176]302、對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。
[0177]303、若查找到與所述語義解析結果匹配的實際主題,則在已存儲的訂閱對應關係中查找與所述實際主題對應的訂閱者。
[0178]其中,基於語義解析結果的匹配方法可參照步驟105的有關描述。
[0179]304、若查找到所述實際主題對應的訂閱者,則將所述獲取到的消息發送至所有查找到的訂閱者。
[0180]另外,如圖11所示,在若執行步驟302後,未查找到與所述語義解析結果匹配的實際主題,則執行305、創建新的實際主題,並存儲新創建的實際主題。
[0181]本發明實施例提供了一種消息發布的方法,可以在網際網路中使用,特別是移動網際網路某些領域,發布者或訂閱者可能不會關心具體的主題什麼,是否存在的場景下。該方法可以直接根據發布者發送的消息進行語義識別,來推斷髮布者可能想要發布的主題,使得發布者根據自己需要發布消息,進而加強了消息傳輸的效率和靈活性。
[0182]對應於如圖10至圖11所示的消息發布的方法流程,本發明實施例提供了相應的消息訂閱方法,如圖12所示,包括:
[0183]401、獲取訂閱者已發送的消息。
[0184]402、對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。
[0185]403、若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則創建查找到的實際主題與所述訂閱者的訂閱對應關係。
[0186]另外,如圖13所示,在若執行步驟402後,未查找到與所述語義解析結果匹配的實際主題,則執行404、創建新的實際主題,並創建新創建的實際主題與所述訂閱者的訂閱對應關係。
[0187]本發明實施例提供了一種消息訂閱的方法,可以在網際網路中使用,特別是移動網際網路某些領域,發布者或訂閱者可能不會關心具體的主題什麼,是否存在的場景下。該方法可以直接根據訂閱者發送的消息進行語義識別,來推斷訂閱者可能想要訂閱的主題,使得訂閱者根據自己需要來訂閱消息。不需要知道具體的主題是什麼,進而加強了消息傳輸的效率和靈活性。
[0188]進一步值得說明的是,如圖2所示的裝置結構包含有實際主題,其設置目的在於將多種消息進行整合歸類到同一主題下。而在一些特殊的應用場景中,例如微博,微信等場景,並不存在明確的發布者和訂閱者的劃分,每個用戶端都可以是消息的發布者和獲取者,並且消息發送的數量巨大很難進行分類,因此在這種場景下,不需要對消息進行整合分類,即如圖2所示的裝置結構可以設置一個匹配模塊來替代原有的實際主題,將將用戶端發送到消息中間件內的不同消息進行語義匹配,將成功匹配的多個用戶端的消息互相進行傳輸即可。
[0189]本發明提供了一種消息發布的裝置,可用於實現如圖3至圖6所示的消息發布的方法流程,如圖14所示,包括:
[0190]信息處理模塊51,用於獲取發布者已發送至與所述發布者對應的虛擬主題的消
肩、O
[0191]主題模塊52,用於根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述實際主題用於發布者和訂閱者之間的消息轉發。
[0192]傳輸模塊53,用於當所述主題模塊52查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。其中,所述標識信息用於使所述訂閱者對應的虛擬主題能夠根據所述標識信息獲取所述消息。
[0193]可選的是,如圖14所示,該裝置還包括:
[0194]語義識別模塊54,用於所述主題模塊52未查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,對所述消息進行語義解析,得到語義解析結果,並根據所述語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。
[0195]路由規則生成模塊55,用於若所述語義識別模塊54查找到與所述語義解析結果匹配的實際主題,則生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則。
[0196]可選的是,所述主題模塊52,用於根據當前所述路由規則生成模塊55已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑。
[0197]所述傳輸模塊53,還用於當所述主題模塊52查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0198]可選的是,所述主題模塊52,還用於在未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題。
[0199]所述路由規則生成模塊55,還用於存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。
[0200]可選的是,所述信息處理模塊51,還用於判斷獲取的所述消息是否為控制消息,所述控制消息用於更新已存儲的虛擬主題與實際主題之間的路由規則。
[0201]所述主題模塊52,用於在所述信息處理模塊51確定獲取的所述消息不是控制消息,則根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑。
[0202]所述路由規則生成模塊55,還用於在所述信息處理模塊52確定獲取的所述消息是控制消息,則根據所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規則進行修改;存儲修改後的虛擬主題與實際主題之間的路由規則。
[0203]可選的是,所述信息處理模塊51還用於生成與所述消息對應的標識信息。
[0204]所述傳輸模塊53,還用於當所述與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息,並將與所述標識信息對應的消息發送至傳輸路徑的終點所對應的訂閱者。
[0205]本發明實施例一種消息發布的裝置,可用於實現如圖9-10所示的消息發布的方法流程,如圖15所示,包括:
[0206]獲取模塊61,用於獲取發布者已發送的消息。
[0207]語義識別模塊62,用於對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。
[0208]主題模塊63,用於在查找到與所述語義解析結果匹配的實際主題時,在已存儲的訂閱對應關係中,查找與所述實際主題對應的訂閱者。
[0209]傳輸模塊64,用於在查找到所述實際主題對應的訂閱者時,將所述獲取到的消息發送至所有查找到的訂閱者。
[0210]可選的是,所述主題模塊63,還用於在未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並存儲新創建的實際主題。
[0211]本發明實施例提供了一種消息訂閱的裝置,可用於實現如圖6-8所示的消息訂閱的方法流程,如圖16所示,包括:
[0212]獲取模塊71,用於獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息。
[0213]創建模塊72,用於根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,所述目的實際主題為所述訂閱者當前訂閱的實際主題;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述目的實際主題用於訂閱者對應的虛擬主題之間的消息轉發。
[0214]可選的是,如圖17所示,所述創建模塊72包括:
[0215]第一主題子模塊721,用於當獲取的所述消息為控制消息時,根據所述控制消息獲取所述目的實際主題,所述控制消息用於更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規則;以及用於更新所述訂閱者對應的虛擬主題與根據所述控制消息獲取到的目的實際主題之間的路由規則。
[0216]可選的是,如圖18所示,所述創建模塊72包括:
[0217]語義識別子模塊722,用於當獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。
[0218]第二主題子模塊723,用於在在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題時,將查找到的實際主題作為目的實際主題,並創建所述訂閱者對應的虛擬主題與查找到的與所述語義解析結果匹配的實際主題之間的路由規則。
[0219]可選的是,所述第二主題子模塊723,還用於在在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則。
[0220]本發明實施例還提供了一種消息訂閱的裝置,可用於實現如圖11-12所示的消息訂閱的方法流程,如圖19所示,包括:
[0221 ] 獲取模塊81,用於獲取訂閱者已發送的消息。
[0222]語義識別模塊82,用於對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題。
[0223]主題模塊83,用於在在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題時,創建查找到的實際主題與所述訂閱者的訂閱對應關係。
[0224]可選的是,所述主題模塊83還用於在在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並創建新創建的實際主題與所述訂閱者的訂閱對應關係。
[0225]本發明實施例提供的消息發布與訂閱的裝置,通過為發布者以及訂閱者在消息中間件中設置相應的虛擬主題,或者通過對發布者以及訂閱者向消息中間件進行語義識別,以保證發布者以及訂閱者不需要獲知實際主題的具體結構的情況下,仍然保證消息被正確地傳輸。相比於現有技術中,當消息中間件中的主題發生變化時,發布者以及訂閱者必須要獲知的變更結果並主動修改路由規則才能完成數據傳輸的技術方案來講,本發明實施例提供的技術方案消息傳輸效率更高,靈活性更強。
[0226]本發明實施例提供了一種消息中間件,如圖20所示,包括至少一個處理器91、存儲器92以及輸入輸出電路93。所述存儲器92被配置有程序代碼,所述處理器91用於調用存儲器92內的程序代碼用以實現如圖3至圖8所示的消息發布與訂閱的方法流程。所述存儲器92和處理器91之間通過總線通信。
[0227]其中,所述輸入輸出電路93用於獲取發布者已發送至與所述發布者對應的虛擬主題的消息;以及當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;以及當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。其中,所述標識信息用於使所述訂閱者對應的虛擬主題能夠根據所述標識信息獲取所述消息。
[0228]處理器91用於根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述實際主題用於發布者和訂閱者之間的消息轉發。
[0229]所述存儲器92用於存儲虛擬主題與實際主題之間的路由規則。
[0230]所述處理器91還用於當未查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,得到語義解析結果,並根據所述語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;若查找到與所述語義解析結果匹配的實際主題,則生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則。
[0231]所述處理器91還用於根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑。
[0232]所述輸入輸出電路93還用於當查找到以所述發布者對應的虛擬主題為起點,並且以訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
[0233]所述處理器91還用於若未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並生成並存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。
[0234]所述處理器91還用於判斷獲取的所述消息是否為控制消息,所述控制消息用於更新已存儲的虛擬主題與實際主題之間的路由規則;若獲取的所述消息不是控制消息,則執行根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑的步驟;若確定獲取的所述消息是控制消息,則根據所述控制消息,對已存儲的虛擬主題與實際主題之間的路由規則進行修改。
[0235]所述存儲器92還用於存儲修改後的虛擬主題與實際主題之間的路由規則。
[0236]所述處理器91還用於生成與所述消息對應的標識信息;根據查找到的所有傳輸路徑,傳輸與所述消息對應的標識信息;當所述與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息,並將與所述標識信息對應的消息發送至傳輸路徑的終點所對應的訂閱者。
[0237]所述輸入輸出電路93還用於獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息。
[0238]所述處理器91還用於根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,所述目的實際主題為所述訂閱者當前訂閱的實際主題;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述目的實際主題用於訂閱者對應的虛擬主題之間的消息轉發。
[0239]所述處理器91還用於當獲取的所述消息為控制消息時,根據所述控制消息獲取目的實際主題,所述控制消息用於更新虛擬主題與所述訂閱者選擇的實際主題之間的路由規則;創建所述訂閱者對應的虛擬主題與根據所述控制消息獲取到的目的實際主題之間的路由規則。
[0240]所述處理器91還用於當獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則創建所述訂閱者對應的虛擬主題與查找到的與所述語義解析結果匹配的實際主題之間的路由規則。
[0241]所述處理器91還用於若在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並創建所述訂閱者對應的虛擬主題與所述新的實際主題之間的路由規則。
[0242]本發明實施例還提供了一種消息中間件,如圖21所示,包括至少一個處理器1001、存儲器1002、輸入輸出電路1003。所述存儲器1002被配置有程序代碼,所述處理器1001用於調用存儲器1002內的程序代碼用以實現如圖9至圖12所示的消息發布與訂閱的方法流程。所述存儲器1002和處理器1001之間通過總線通信。
[0243]所述處理器1001用於獲取發布者已發送的消息;對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;若查找到與所述語義解析結果匹配的實際主題,則在已存儲的訂閱對應關係中,查找與所述實際主題對應的訂閱者;若查找到所述實際主題對應的訂閱者,則將所述獲取到的消息發送至所有查找到的訂閱者。
[0244]所述處理器1001還用於若未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並存儲新創建的實際主題。
[0245]所述處理器1001還用於獲取訂閱者已發送的消息;對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題;若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則創建查找到的實際主題與所述訂閱者的訂閱對應關係。
[0246]所述處理器1001還用於若在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並創建新創建的實際主題與所述訂閱者的訂閱對應關係。
[0247]通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發明可藉助軟體加必需的通用硬體的方式來實現,當然也可以通過硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在可讀取的存儲介質中,如計算機的軟盤,硬碟或光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述的方法。
[0248]以上所述,僅為本發明的【具體實施方式】,但本發明的保護範圍並不局限於此,任何熟悉本【技術領域】的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以所述權利要求的保護範圍為準。
【權利要求】
1.一種消息發布的方法,其特徵在於,包括: 獲取發布者已發送至與所述發布者對應的虛擬主題的消息; 根據已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的所有傳輸路徑;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述實際主題用於發布者和訂閱者之間的消息轉發; 當查找到以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息; 當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點後,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
2.根據權利要求1所述的方法,其特徵在於,還包括: 當未查找到以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑時,則對所述消息進行語義解析,得到語義解析結果,並根據所述語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題; 若查找到與所述語義解析結果匹配的實際主題,則生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則。
3.根據權利要求2所述的方法,其特徵在於,在所述生成並存儲所述發布者對應的虛擬主題與查找到的實際主題之間的路由規則之後,還包括: 根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑; 當查找到以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息; 當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
4.根據權利要求2或3所述的方法,其特徵在於,還包括: 若未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並生成並存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。
5.根據權利要求1所述的方法,其特徵在於,還包括: 獲取所述發布者發送的控制消息,所述控制消息用於更新已存儲的虛擬主題與實際主題之間的路由規則; 根據所述控制消息,對當前已存儲的虛擬主題與實際主題之間的路由規則進行修改,並存儲修改後的路由規則。
6.根據權利要求1至5任意一項所述的方法,其特徵在於,在查找到的傳輸路徑上,傳輸與所述消息對應的標識信息之前,還包括: 生成與所述消息對應的標識信息; 相應地,所述當所述與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者,包括:當與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息,並將與所述標識信息對應的消息發送至該傳輸路徑的終點所對應的訂閱者。
7.—種消息發布的方法,其特徵在於,包括: 獲取發布者已發送的消息; 對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題; 若查找到與所述語義解析結果匹配的實際主題,則在已存儲的訂閱關係表中,查找與所述實際主題對應的訂閱者; 若查找到所述實際主題對應的訂閱者,則將所述獲取到的消息發送至查找到的所有訂閱者。
8.根據權利要求7所述的方法,其特徵在於,還包括: 若未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並存儲創建的所述實際主題。
9.一種消息訂閱的方法,其特徵在於,包括: 獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息; 根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規貝U,所述目的實際主題為所述訂閱者當前訂閱的實際主題;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發。
10.根據權利要求9所述的方法,其特徵在於,所述根據獲取的所述消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,包括: 當獲取的所述消息為控制消息時,根據所述控制消息確定所述訂閱者訂閱的實際主題,並將所述訂閱者訂閱的實際主題作為目的實際主題,所述控制消息包含所述訂閱者訂閱的實際主題的消息; 創建所述訂閱者對應的虛擬主題與所述目的實際主題之間的路由規則。
11.根據權利要求10所述的方法,其特徵在於,還包括: 當獲取的所述消息不為控制消息時,對所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題; 若在已存儲的實際主題中查找到與所述語義解析結果匹配的實際主題,則創建所述訂閱者對應的虛擬主題與查找到的與所述語義解析結果匹配的實際主題之間的路由規則。
12.根據權利要求11所述的方法,其特徵在於,還包括: 若在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題,則創建新的實際主題,並創建所述訂閱者對應的虛擬主題與所述新的實際主題之間的路由規則。
13.一種消息發布的裝置,其特徵在於,包括: 信息處理模塊, 用於獲取發布者已發送至與所述發布者對應的虛擬主題的消息; 主題模塊,用於根據已存儲的虛擬主題與所述消息發布的裝置包含的各個實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的所有傳輸路徑;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發;所述實際主題用於發布者和訂閱者之間的消息轉發;傳輸模塊,用於當所述主題模塊查找到以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上,傳輸所述消息或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
14.根據權利要求13所述的裝置,其特徵在於,還包括: 語義識別模塊,用於當所述主題模塊未查找到以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑時,對所述消息進行語義解析,得到語義解析結果,並根據所述語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題; 路由規則生成模塊,用於若所述語義識別模塊查找到與所述語義解析結果匹配的實際主題,則生成並存儲所述發布者對應的虛擬主題與查找到的所述實際主題之間的路由規則。
15.根據權利要求14所述的裝置,其特徵在於,所述主題模塊,具體用於根據當前已存儲的虛擬主題與實際主題之間的路由規則,查找以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑; 所述傳輸模塊,具體用於當所述主題模塊查找到以所述發布者對應的虛擬主題為起點,並且以任意一個訂閱者對應的虛擬主題為終點的傳輸路徑時,在查找到的傳輸路徑上或與所述消息對應的標識信息;當所述消息或與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,將所述消息發送至該傳輸路徑的終點所對應的訂閱者。
16.根據權利要求14或15所述的裝置,其特徵在於,所述主題模塊,還用於在未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題; 所述路由規則生成模塊,還用於存儲所述發布者對應的虛擬主題與新創建的實際主題之間的路由規則。`
17.根據權利要求13所述的裝置,其特徵在於,所述信息處理模塊,還用於獲取發布者發送的控制消息,所述控制消息用於更新已存儲的虛擬主題與實際主題之間的路由規則; 所述路由規則生成模塊,還用於根據所述控制消息,對當前已存儲的虛擬主題與實際主題之間的路由規則進行修改,並存儲修改後的路由規則。
18.根據權利要求13至17任意一項所述的裝置,其特徵在於,所述信息處理模塊還用於,在獲取發布者發送至與所述發布者對應的虛擬主題的消息之後,生成與所述消息對應的標識信息; 所述傳輸模塊,具體用於當所述與所述消息對應的標識信息傳輸至每一條傳輸路徑的終點時,獲取與所述標識信息對應的消息,並將與所述標識信息對應的消息發送至傳輸路徑的終點所對應的訂閱者。
19.一種消息發布的裝置,其特徵在於,包括: 獲取模塊,用於獲取發布者發送的消息; 語義識別模塊,用於對獲取到的消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題; 主題模塊,用於在查找到與所述語義解析結果匹配的實際主題時,在已存儲的訂閱關係表中,查找與所述實際主題對應的訂閱者;傳輸模塊,用於在查找到所述實際主題對應的訂閱者時,將所述獲取到的消息發送至查找到的所有訂閱者。
20.根據權利要求19所述的裝置,其特徵在於,所述主題模塊,還用於在未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題,並存儲創建的所述實際主題。
21.一種消息訂閱的裝置,其特徵在於,包括: 獲取模塊,用於獲取訂閱者已發送至所述訂閱者對應的虛擬主題的消息; 創建模塊,用於根據獲取到的訂閱者發送的消息,創建所述訂閱者對應的虛擬主題與目的實際主題之間的路由規則,所述目的實際主題為所述訂閱者當前訂閱的實際主題;其中,所述虛擬主題用於實際主題和發布者之間的消息轉發或者實際主題和訂閱者之間的消息轉發。
22.根據權利要求21所述的裝置,其特徵在於,所述創建模塊包括: 第一主題子模塊,用於當獲取到的所述消息為控制消息時,根據所述控制消息確定所述訂閱者訂閱的實際主題,並將所述訂閱者訂閱的實際主題作為所述目的實際主題,所述控制消息包含所述訂閱者訂閱的實際主題的消息; 路由規則模塊,用於更新所述訂閱者對應的虛擬主題與所述目的實際主題之間的路由規則。
23.根據權利要求22所述的裝置,其特徵在於,所述第一主題子模塊,還用於當獲取的所述消息不為控制消息時,對獲取的所述消息進行語義解析,並根據語義解析結果,在已存儲的實際主題中查找與所述語義解析結果匹配的實際主題,並在查找到與所述語義解析結果匹配的實際主題時,將查找到的實際主題作為目的實際主題。
24.根據權利要求23所述的裝置,其特徵在於,所述創建模塊,還用於當所述第一主題子模塊在已存儲的實際主題中未查找到與所述語義解析結果匹配的實際主題時,創建新的實際主題作為目的實際主題,並創建所述訂閱者對應的虛擬主題與所述新的實際主題之間的路由規則。
【文檔編號】H04L12/58GK103534988SQ201380000499
【公開日】2014年1月22日 申請日期:2013年6月3日 優先權日:2013年6月3日
【發明者】方元, 唐冠軍, 王雲鵬 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀