一種基于分發(fā)思想的消息服務(wù)中間件系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種基于分發(fā)思想的消息服務(wù)中間件系統(tǒng),用于各類消息的分發(fā)、轉(zhuǎn)發(fā)服務(wù),旨在滿足應(yīng)用服務(wù)的基礎(chǔ)上降低服務(wù)端接收消息請(qǐng)求任務(wù)的壓力以及提高處理多個(gè)請(qǐng)求方不同請(qǐng)求任務(wù)的效率問題。系統(tǒng)包括:(1)消息服務(wù)訂閱模塊;(2)消息服務(wù)分發(fā)模塊;(3)消息服務(wù)發(fā)布模塊。采用該系統(tǒng)可以解決訂閱方頻繁查找不同服務(wù)的提供方地址的甚至找不到服務(wù)提供方地址的問題;可以有效降低服務(wù)端接收請(qǐng)求任務(wù)的次數(shù),減小重復(fù)數(shù)據(jù)發(fā)布的概率,有效的提高數(shù)據(jù)發(fā)布效率;能夠解決服務(wù)端大批量請(qǐng)求任務(wù)處理的瓶頸問題。
【專利說明】—種基于分發(fā)思想的消息服務(wù)中間件系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,在各類消息服務(wù)中,當(dāng)一方向另一方請(qǐng)求數(shù)據(jù)或服務(wù)時(shí),對(duì)于任務(wù)處理效率以及數(shù)據(jù)發(fā)布效率有較高的要求,該發(fā)明旨在減少服務(wù)端接收相同請(qǐng)求任務(wù)的概率以及減少處理相同請(qǐng)求的負(fù)擔(dān),提高請(qǐng)求任務(wù)的處理效率以及解決大批量請(qǐng)求任務(wù)處理在數(shù)量以及效率上的瓶頸問題。具體地說是一種基于分發(fā)思想的消息服務(wù)中間件系統(tǒng)。
【背景技術(shù)】
[0002]在各類消息服務(wù)中,請(qǐng)求任務(wù)處理的效率、數(shù)據(jù)發(fā)布的效率以及大批量請(qǐng)求任務(wù)的可靠穩(wěn)定處理都要較高的要求,而計(jì)算機(jī)的CPU、內(nèi)存等各種資源以及網(wǎng)絡(luò)帶寬資源都是有限的,為滿足大批量請(qǐng)求任務(wù)應(yīng)用的需求,消息服務(wù)必須高效、穩(wěn)定。
[0003]目前各類消息服務(wù)都采用請(qǐng)求方向數(shù)據(jù)或服務(wù)提供方直接發(fā)送請(qǐng)求的方式進(jìn)行,這類處理方法使得服務(wù)方頻繁接收相同請(qǐng)求任務(wù)以及頻繁發(fā)送相同的數(shù)據(jù)或提供重復(fù)的服務(wù),在服務(wù)方有限的服務(wù)提供能力下,導(dǎo)致服務(wù)提供效率的降低。而且,當(dāng)服務(wù)提供方在某一時(shí)刻崩潰重啟后,當(dāng)前消息服務(wù)處理方法無法使得數(shù)據(jù)或服務(wù)請(qǐng)求方及時(shí)獲取數(shù)據(jù)或服務(wù),且請(qǐng)求方必須重新提交請(qǐng)求任務(wù)后,才能重新獲取數(shù)據(jù)或服務(wù),增加了請(qǐng)求方以及服務(wù)提供方的負(fù)擔(dān)。
[0004]當(dāng)請(qǐng)求方需要服務(wù)提供方周期性提供服務(wù)時(shí),當(dāng)前各類消息服務(wù)處理方法要求請(qǐng)求方周期性的向服務(wù)提供方發(fā)送服務(wù)請(qǐng)求,導(dǎo)致網(wǎng)絡(luò)負(fù)載隨請(qǐng)求方數(shù)量以及請(qǐng)求周期成幾何倍數(shù)增長,當(dāng)前各類消息服務(wù)處理方法不可避免的會(huì)產(chǎn)生批量請(qǐng)求任務(wù)處理以及服務(wù)提供效率的瓶頸問題,因此,減少不必要的請(qǐng)求任務(wù),將有利于整體服務(wù)效率的提升。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種消息服務(wù)中間件系統(tǒng)。
[0006]本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,系統(tǒng)包括I)消息服務(wù)訂閱模塊;2)消息服務(wù)分發(fā)模塊;3)消息服務(wù)發(fā)布模塊,其中:
O消息服務(wù)訂閱模塊
消息服務(wù)訂閱模塊,主要實(shí)現(xiàn)訂閱請(qǐng)求的注冊(cè)、發(fā)送以及訂閱數(shù)據(jù)的正確回返,消息服務(wù)訂閱模塊數(shù)據(jù)流向?yàn)?實(shí)例化訂閱請(qǐng)求任務(wù)后,消息服務(wù)訂閱模塊將服務(wù)請(qǐng)求任務(wù)進(jìn)行注冊(cè)登記,并將帶有服務(wù)碼以及過濾條件的請(qǐng)求信息發(fā)送給消息服務(wù)分發(fā)模塊;消息服務(wù)訂閱模塊接收到回返數(shù)據(jù)后,根據(jù)服務(wù)碼以及注冊(cè)信息,將回返數(shù)據(jù)返回給相應(yīng)的請(qǐng)求者,消息服務(wù)訂閱模塊的各類功能如下:
(1)CMsgSubscribeListMgr類:初始化運(yùn)行環(huán)境并啟動(dòng)接收線程,管理注冊(cè)信息,并分發(fā)回返數(shù)據(jù);
(2)CMsgSubscribe類:定義消息訂閱接口,其子類需要實(shí)現(xiàn)該類定義的方法;
(3)NewClass類及NewClass2類:消息訂閱實(shí)例類,繼承CMsgSubscribe類,根據(jù)具體業(yè)務(wù)需求實(shí)現(xiàn)CMsgSubscribe類定義的接口 ;
消息服務(wù)中間件系統(tǒng),采用服務(wù)碼的形式或者稱為消息號(hào)區(qū)分不同的服務(wù),服務(wù)方對(duì)每一個(gè)服務(wù)提供一個(gè)特定的服務(wù)碼,訂閱方以提供服務(wù)碼的方式獲取服務(wù),服務(wù)碼可根據(jù)具體業(yè)務(wù)需要進(jìn)行自定義,消息服務(wù)訂閱模塊采用過濾條件的方式處理需特殊處理的訂閱請(qǐng)求;
消息服務(wù)訂閱模塊支持兩個(gè)訂閱方互相訂閱的業(yè)務(wù);
2)消息服務(wù)分發(fā)模塊
消息服務(wù)分發(fā)模塊,是消息服務(wù)中間件系統(tǒng)的主體模塊,該模塊需要實(shí)現(xiàn)的功能包括:獲取服務(wù)配置信息、消息解析、消息分發(fā),包括訂閱請(qǐng)求的轉(zhuǎn)發(fā)和訂閱數(shù)據(jù)的轉(zhuǎn)發(fā)、相同請(qǐng)求處理、特殊訂閱處理或過濾處理以及訂閱信息注冊(cè)及取消訂閱;
消息服務(wù)分發(fā)模塊具體實(shí)現(xiàn)流程為:
(1)初始化運(yùn)行環(huán)境,獲取服務(wù)配置信息,包括服務(wù)類型、服務(wù)提供方地址、采用的通信方式以及服務(wù)自動(dòng)探測周期,配置信息記錄到服務(wù)轉(zhuǎn)發(fā)表中;
(2)消息服務(wù)分發(fā)模塊接收消息;
(3)消息服務(wù)分發(fā)模塊對(duì)消息進(jìn)行解析,獲取消息類型以及消息服務(wù)碼;
(4)消息服務(wù)分發(fā)模塊根據(jù)消息類型及服務(wù)碼進(jìn)行相應(yīng)的處理,基本消息類型包括:請(qǐng)求消息、響應(yīng)消息、取消訂閱消息以及探測消息,消息類型可根據(jù)業(yè)務(wù)需要進(jìn)行擴(kuò)展;如果接收到的消息類型是請(qǐng)求消息,并且注冊(cè)列表中沒有該類型的請(qǐng)求或者請(qǐng)求參數(shù)不相同,則根據(jù)服務(wù)轉(zhuǎn)發(fā)表將消息轉(zhuǎn)發(fā)給相應(yīng)的服務(wù)提供方,并將該訂閱信息寫入注冊(cè)列表;另外,如果已有該類型的請(qǐng)求,但超過某個(gè)時(shí)間閥值未收到響應(yīng),消息服務(wù)分發(fā)夠?qū)⒅匕l(fā)該訂閱請(qǐng)求,如果是響應(yīng)消息,則根據(jù)服務(wù)碼以及注冊(cè)列表將消息返回給相應(yīng)的訂閱者;數(shù)據(jù)回返時(shí)根據(jù)注冊(cè)列表中的過濾條件選擇回返方式,回返方式可自定義;如果是取消訂閱消息,則將該訂閱者從注冊(cè)列表中刪除,當(dāng)注冊(cè)列表為空時(shí),消息服務(wù)分發(fā)模塊將向該類型的消息服務(wù)提供方發(fā)送取消訂閱消息;如果是探測消息,則提示服務(wù)提供方正常運(yùn)行,并根據(jù)業(yè)務(wù)需求進(jìn)行相關(guān)處理;
消息服務(wù)分發(fā)模塊包含服務(wù)探測機(jī)制,當(dāng)某個(gè)類型的請(qǐng)求超過某個(gè)閥值未收到響應(yīng)時(shí),消息服務(wù)分發(fā)模塊將自動(dòng)向服務(wù)端發(fā)送該類型的訂閱請(qǐng)求,超時(shí)閥值可根據(jù)不同的服務(wù)需求進(jìn)行獨(dú)立設(shè)置;
消息服務(wù)分發(fā)模塊各類功能如下:
(1)CMsgDispatchMgr類:初始化運(yùn)行環(huán)境,提供服務(wù)總接口 ;
(2)CMsgParser類:消息解析,獲取消息服務(wù)碼等必要信息
(3)SMsgHead類:定義消息解析結(jié)構(gòu),可根據(jù)業(yè)務(wù)擴(kuò)展;
(4)CMsgSubscribeMgr類:訂閱請(qǐng)求注冊(cè)及轉(zhuǎn)發(fā)、響應(yīng)消息分發(fā)以及其他各類型消息處理;
(5)CSubscribe類:定義訂閱者注冊(cè)信息格式,包括訂閱者地址、過濾參數(shù)等必要信息;
(6)CMsgReqSendFactory類:訂閱請(qǐng)求信息發(fā)送方式管理;
(7)CMsgSubResponseHandler類:定義訂閱請(qǐng)求信息發(fā)送接口,便于自定義訂閱請(qǐng)求消息發(fā)送方式; (8)CMsgSendHandlerO類及CMsgSendHandlerl類:實(shí)例化的訂閱請(qǐng)求信息發(fā)送方式;
(9)CMsgReqSendFactory類:響應(yīng)數(shù)據(jù)回返方式管理;
(10)CMsgSendHandle類:訂閱響應(yīng)消息回返方式接口,便于自定義響應(yīng)信息回返方式;
(11)CDetailMsgHandlerO類及CDetailMsgHandlerl類:實(shí)例化的響應(yīng)數(shù)據(jù)回返方式類;
3)消息服務(wù)發(fā)布模塊
消息服務(wù)發(fā)布模塊主要實(shí)現(xiàn)訂閱請(qǐng)求的接收、解析以及訂閱數(shù)據(jù)的回返,消息服務(wù)發(fā)布模塊工作流程如下:
(O消息服務(wù)發(fā)布模塊接收消息;
(2)消息服務(wù)發(fā)布模塊對(duì)消息進(jìn)行解析,獲取該請(qǐng)求的服務(wù)碼及消息類型;
(3)如果是訂閱請(qǐng)求消息,消息服務(wù)發(fā)布模塊根據(jù)該服務(wù)碼查找本服務(wù)的訂閱請(qǐng)求注冊(cè)列表,如果已經(jīng)存在該類型的請(qǐng)求,則不進(jìn)行處理,否則將該訂閱請(qǐng)求注冊(cè)登記到訂閱請(qǐng)求注冊(cè)列表中,并將訂閱請(qǐng)求提供給服務(wù)提供方;
(4)如果接收到探測消息,則根據(jù)消息服務(wù)碼查找本服務(wù)的訂閱請(qǐng)求注冊(cè)列表,如果已經(jīng)存在該類型的請(qǐng)求,則返回探測響應(yīng)消息;否則,解析探測消息,獲取訂閱請(qǐng)求信息,并將該訂閱請(qǐng)求注冊(cè)登記到本服務(wù)的訂閱請(qǐng)求注冊(cè)列表中,并將訂閱請(qǐng)求提供給服務(wù)提供方;
消息服務(wù)發(fā)布模塊的類功能是=CPubSubServer類:實(shí)現(xiàn)消息接收、解析以及響應(yīng)數(shù)據(jù)回返。
[0007]所述的系統(tǒng),設(shè)置消息訂閱接口,按照規(guī)定格式發(fā)送訂閱請(qǐng)求,訂閱請(qǐng)求格式規(guī)定如下:
報(bào)文頭+服務(wù)碼+過濾參數(shù)+消息標(biāo)記
報(bào)文頭為協(xié)議報(bào)文頭,長度根據(jù)采用的協(xié)議進(jìn)行規(guī)定;服務(wù)碼可根據(jù)實(shí)際業(yè)務(wù)需求進(jìn)行定義,長度根據(jù)需要設(shè)置;過濾參數(shù)用于區(qū)分同類型請(qǐng)求不同請(qǐng)求參數(shù)的訂閱請(qǐng)求,其格式可根據(jù)實(shí)際業(yè)務(wù)進(jìn)行自定義;消息標(biāo)記用于區(qū)別各類消息類型及業(yè)務(wù)所需的消息標(biāo)記。
[0008]所述的系統(tǒng),將服務(wù)進(jìn)行分類,不同請(qǐng)求者同一類型、相同請(qǐng)求參數(shù)的訂閱請(qǐng)求條件性向服務(wù)提供方發(fā)送,默認(rèn)發(fā)送條件為:
(1)沒有該類型的訂閱請(qǐng)求;
(2)有該類型的訂閱請(qǐng)求,但請(qǐng)求參數(shù)不同;
(3)有該類型的同請(qǐng)求參數(shù)的請(qǐng)求,但超過預(yù)定時(shí)間閥值未收到響應(yīng)消息;
發(fā)送條件可根據(jù)實(shí)際業(yè)務(wù)需要進(jìn)行擴(kuò)展,預(yù)定時(shí)間閥值不同服務(wù)可獨(dú)立設(shè)置。
[0009]所述的系統(tǒng),消息服務(wù)分發(fā)模塊采用超時(shí)自動(dòng)探測機(jī)制,對(duì)超過預(yù)定時(shí)間閥值未收到響應(yīng)消息的服務(wù)進(jìn)行探測。
[0010]所述的系統(tǒng),消息服務(wù)分發(fā)模塊轉(zhuǎn)發(fā)、分發(fā)訂閱請(qǐng)求及響應(yīng)消息時(shí),可采用自定義方式進(jìn)行發(fā)送消息。
[0011]本發(fā)明的目的有益效果是:通過消息服務(wù)訂閱模塊、消息服務(wù)分發(fā)模塊以及消息服務(wù)發(fā)布模塊的配合工作,降低頻繁訂閱對(duì)訂閱方以及服務(wù)提供方帶來的負(fù)擔(dān)以及網(wǎng)絡(luò)負(fù)載壓力,規(guī)范服務(wù)提供方式,提高大批量任務(wù)處理的穩(wěn)定性及服務(wù)提供效率。
【專利附圖】
【附圖說明】
[0012]圖1是消息服務(wù)中間件系統(tǒng)結(jié)構(gòu)圖;
圖2是消息服務(wù)訂閱模塊功能結(jié)構(gòu)示意圖;
圖3是消息服務(wù)訂閱模塊流程圖;
圖4是消息服務(wù)分發(fā)模塊功能結(jié)構(gòu)示意圖圖5是消息服務(wù)發(fā)布模塊功能結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0013]參照說明書附圖對(duì)本發(fā)明的一種消息服務(wù)中間件系統(tǒng)作以下詳細(xì)地說明。
[0014]本發(fā)明所要解決的技術(shù)問題是提供一種基于分發(fā)思想的消息服務(wù)中間件系統(tǒng),該系統(tǒng)分類訂閱各類請(qǐng)求任務(wù),相同類型的請(qǐng)求任務(wù)在一定時(shí)間內(nèi)只請(qǐng)求一次,以減少服務(wù)提供方對(duì)請(qǐng)求任務(wù)處理的壓力;對(duì)服務(wù)方提供的數(shù)據(jù)或服務(wù)采用注冊(cè)分發(fā)技術(shù),使得每個(gè)數(shù)據(jù)或服務(wù)請(qǐng)求方都能及時(shí)獲取所需數(shù)據(jù)或服務(wù)。
[0015]消息服務(wù)中間件系統(tǒng)結(jié)構(gòu)如圖1所示,其具體實(shí)現(xiàn)方案如下:
系統(tǒng)設(shè)置I)消息服務(wù)訂閱模塊;2)消息服務(wù)分發(fā)模塊;3)消息服務(wù)發(fā)布模塊,其中: O消息服務(wù)訂閱模塊
消息服務(wù)訂閱模塊主要實(shí)現(xiàn)訂閱請(qǐng)求的注冊(cè)、發(fā)送以及訂閱數(shù)據(jù)的正確回返。消息服務(wù)訂閱模塊數(shù)據(jù)流向?yàn)?實(shí)例化訂閱請(qǐng)求任務(wù)后,訂閱模塊將服務(wù)請(qǐng)求任務(wù)進(jìn)行注冊(cè)登記,并將帶有服務(wù)碼以及過濾條件的請(qǐng)求信息發(fā)送給消息服務(wù)分發(fā)模塊;消息服務(wù)訂閱模塊接收到回返數(shù)據(jù)后,根據(jù)服務(wù)碼以及注冊(cè)信息,將回返數(shù)據(jù)返回給相應(yīng)的請(qǐng)求者。
[0016]消息服務(wù)訂閱模塊類圖如圖2所示,各類的功能如下:
(1)CMsgSubscribeListMgr類:初始化運(yùn)行環(huán)境并啟動(dòng)接收線程,管理注冊(cè)信息,并分發(fā)回返數(shù)據(jù);
(2)CMSgSUbScribe類:定義消息訂閱接口,其子類需要實(shí)現(xiàn)該類定義的方法;
(3)NewClass類及NewClass2類:消息訂閱實(shí)例類,繼承CMsgSubscribe類,根據(jù)具體業(yè)務(wù)需求實(shí)現(xiàn)CMsgSubscribe類定義的接口。
[0017]消息服務(wù)中間件采用服務(wù)碼的形式或者稱為消息號(hào)區(qū)分不同的服務(wù),服務(wù)方對(duì)每一個(gè)服務(wù)提供一個(gè)特定的服務(wù)碼,訂閱方以提供服務(wù)碼的方式獲取服務(wù),服務(wù)碼可根據(jù)具體業(yè)務(wù)需要進(jìn)行自定義。消息服務(wù)訂閱模塊采用過濾條件的方式處理需特殊處理的訂閱請(qǐng)求,比如A請(qǐng)求2013年濟(jì)南市的雨水情況,B請(qǐng)求青島市2014年的雨水情況,A和B將采用相同的服務(wù)碼進(jìn)行請(qǐng)求,但兩者的請(qǐng)求參數(shù)將在過濾條件中進(jìn)行區(qū)別。
[0018]消息服務(wù)訂閱模塊流程圖如圖3所示。
[0019]消息服務(wù)訂閱模塊支持兩個(gè)訂閱方互相訂閱的業(yè)務(wù)。例如,A可提供雨水類的服務(wù)信息,B可提供糧食產(chǎn)量類的信息,則A可向B訂閱請(qǐng)求糧食類的信息服務(wù),B可向A訂閱請(qǐng)求雨水類的信息服務(wù)。
[0020]2)消息服務(wù)分發(fā)模塊
消息服務(wù)分發(fā)模塊是消息服務(wù)中間件的主體模塊,該模塊需要實(shí)現(xiàn)的功能包括:獲取服務(wù)配置信息、消息解析、消息分發(fā)(包括訂閱請(qǐng)求的轉(zhuǎn)發(fā)和訂閱數(shù)據(jù)的轉(zhuǎn)發(fā))、相同請(qǐng)求處理、特殊訂閱處理(過濾處理)以及訂閱信息注冊(cè)及取消訂閱。
[0021]消息服務(wù)分發(fā)模塊具體實(shí)現(xiàn)流程為:
(1)初始化運(yùn)行環(huán)境,獲取服務(wù)配置信息,包括服務(wù)類型、服務(wù)提供方地址、采用的通信方式以及服務(wù)自動(dòng)探測周期,配置信息記錄到服務(wù)轉(zhuǎn)發(fā)表中;
(2)消息服務(wù)分發(fā)模塊接收消息;
(3)消息服務(wù)分發(fā)模塊對(duì)消息進(jìn)行解析,獲取消息類型以及消息服務(wù)碼;
(4)消息服務(wù)分發(fā)模塊根據(jù)消息類型及服務(wù)碼進(jìn)行相應(yīng)的處理?;鞠㈩愋桶?請(qǐng)求消息、響應(yīng)消息、取消訂閱消息以及探測消息,消息類型可根據(jù)業(yè)務(wù)需要進(jìn)行擴(kuò)展。如果接收到的消息類型是請(qǐng)求消息,并且注冊(cè)列表中沒有該類型的請(qǐng)求,或者請(qǐng)求參數(shù)不相同,則根據(jù)服務(wù)轉(zhuǎn)發(fā)表將消息轉(zhuǎn)發(fā)給相應(yīng)的服務(wù)提供方,并將該訂閱信息寫入注冊(cè)列表,另夕卜,如果已有該類型的請(qǐng)求,但超過某個(gè)時(shí)間閥值未收到響應(yīng),消息服務(wù)分發(fā)夠?qū)⒅匕l(fā)該訂閱請(qǐng)求。如果是響應(yīng)消息,則根據(jù)服務(wù)碼以及注冊(cè)列表將消息返回給相應(yīng)的訂閱者;數(shù)據(jù)回返時(shí)根據(jù)注冊(cè)列表中的過濾條件選擇回返方式,回返方式可自定義。如果是取消訂閱消息,則將該訂閱者從注冊(cè)列表中刪除,當(dāng)注冊(cè)列表為空時(shí),消息服務(wù)分發(fā)模塊將向該類型的消息服務(wù)提供方發(fā)送取消訂閱消息。如果是探測消息,則提示服務(wù)提供方正常運(yùn)行,并根據(jù)業(yè)務(wù)需求進(jìn)行相關(guān)處理。
[0022]消息服務(wù)分發(fā)模塊包含服務(wù)探測機(jī)制,當(dāng)某個(gè)類型的請(qǐng)求超過某個(gè)閥值未收到響應(yīng)時(shí),消息服務(wù)分發(fā)模塊將自動(dòng)向服務(wù)端發(fā)送該類型的訂閱請(qǐng)求。超時(shí)閥值可根據(jù)不同的服務(wù)需求進(jìn)行獨(dú)立設(shè)置。
[0023]消息服務(wù)分發(fā)模塊類圖如圖4所示,各類功能如下:
(1)CMsgDispatchMgr類:初始化運(yùn)行環(huán)境,提供服務(wù)總接口 ;
(2)CMsgParser類:消息解析,獲取消息服務(wù)碼等必要信息
(3)SMsgHead類:定義消息解析結(jié)構(gòu),可根據(jù)業(yè)務(wù)擴(kuò)展;
(4)CMsgSubscribeMgr類:訂閱請(qǐng)求注冊(cè)及轉(zhuǎn)發(fā)、響應(yīng)消息分發(fā)以及其他各類型消息處理;
(5)CSubscribe類:定義訂閱者注冊(cè)信息格式,包括訂閱者地址、過濾參數(shù)等必要信息
(6)CMsgReqSendFactory類:訂閱請(qǐng)求信息發(fā)送方式管理
(7)CMsgSubResponseHandler類:定義訂閱請(qǐng)求信息發(fā)送接口,便于自定義訂閱請(qǐng)求消息發(fā)送方式
(8)CMsgSendHandlerO類及CMsgSendHandlerl類:實(shí)例化的訂閱請(qǐng)求信息發(fā)送方式
(9)CMsgReqSendFactory類:響應(yīng)數(shù)據(jù)回返方式管理;
(10)CMsgSendHandle類:訂閱響應(yīng)消息回返方式接口,便于自定義響應(yīng)信息回返方式
(11)CDetailMsgHandlerO類及CDetailMsgHandlerl類:實(shí)例化的響應(yīng)數(shù)據(jù)回返方式類
3)消息服務(wù)發(fā)布模塊
消息服務(wù)發(fā)布模塊主要實(shí)現(xiàn)訂閱請(qǐng)求的接收、解析以及訂閱數(shù)據(jù)的回返。消息服務(wù)發(fā)布模塊流程如下:
(O消息服務(wù)發(fā)布模塊接收消息;
(2)消息服務(wù)發(fā)布模塊對(duì)消息進(jìn)行解析,獲取該請(qǐng)求的服務(wù)碼及消息類型;
(3)如果是訂閱請(qǐng)求消息,消息服務(wù)發(fā)布模塊根據(jù)該服務(wù)碼查找本服務(wù)的訂閱請(qǐng)求注冊(cè)列表,如果已經(jīng)存在該類型的請(qǐng)求,則不進(jìn)行處理,否則將該訂閱請(qǐng)求注冊(cè)登記到訂閱請(qǐng)求注冊(cè)列表中,并將訂閱請(qǐng)求提供給服務(wù)提供方;
(4)如果接收到探測消息,則根據(jù)消息服務(wù)碼查找本服務(wù)的訂閱請(qǐng)求注冊(cè)列表,如果已經(jīng)存在該類型的請(qǐng)求,則返回探測響應(yīng)消息;否則,解析探測消息,獲取訂閱請(qǐng)求信息,并將該訂閱請(qǐng)求注冊(cè)登記到本服務(wù)的訂閱請(qǐng)求注冊(cè)列表中,并將訂閱請(qǐng)求提供給服務(wù)提供方。
[0024]消息服務(wù)發(fā)布模塊類圖如圖5所示,各類功能如下所示:
(I)CPubSubServer類:實(shí)現(xiàn)消息接收、解析以及響應(yīng)數(shù)據(jù)回返。
【權(quán)利要求】
1.一種基于分發(fā)思想的消息服務(wù)中間件系統(tǒng),其特征在于,系統(tǒng)包括I)消息服務(wù)訂閱模塊;2)消息服務(wù)分發(fā)模塊;3)消息服務(wù)發(fā)布模塊,其中: O消息服務(wù)訂閱模塊 消息服務(wù)訂閱模塊,主要實(shí)現(xiàn)訂閱請(qǐng)求的注冊(cè)、發(fā)送以及訂閱數(shù)據(jù)的正確回返,消息服務(wù)訂閱模塊數(shù)據(jù)流向?yàn)?實(shí)例化訂閱請(qǐng)求任務(wù)后,消息服務(wù)訂閱模塊將服務(wù)請(qǐng)求任務(wù)進(jìn)行注冊(cè)登記,并將帶有服務(wù)碼以及過濾條件的請(qǐng)求信息發(fā)送給消息服務(wù)分發(fā)模塊;消息服務(wù)訂閱模塊接收到回返數(shù)據(jù)后,根據(jù)服務(wù)碼以及注冊(cè)信息,將回返數(shù)據(jù)返回給相應(yīng)的請(qǐng)求者,消息服務(wù)訂閱模塊的各類功能如下: (1)CMsgSubscribeListMgr類:初始化運(yùn)行環(huán)境并啟動(dòng)接收線程,管理注冊(cè)信息,并分發(fā)回返數(shù)據(jù); (2)CMSgSUbScribe類:定義消息訂閱接口,其子類需要實(shí)現(xiàn)該類定義的方法; (3)NewClass類及NewClass2類:消息訂閱實(shí)例類,繼承CMsgSubscribe類,根據(jù)具體業(yè)務(wù)需求實(shí)現(xiàn)CMsgSubscribe類定義的接口 ; 消息服務(wù)中間件系統(tǒng),采用服務(wù)碼的形式或者稱為消息號(hào)區(qū)分不同的服務(wù),服務(wù)方對(duì)每一個(gè)服務(wù)提供一個(gè)特定的服務(wù)碼,訂閱方以提供服務(wù)碼的方式獲取服務(wù),服務(wù)碼可根據(jù)具體業(yè)務(wù)需要進(jìn)行自定義,消息服務(wù)訂閱模塊采用過濾條件的方式處理需特殊處理的訂閱請(qǐng)求; 消息服務(wù)訂閱模塊支持兩個(gè)訂閱方互相訂閱的業(yè)務(wù); 2)消息服務(wù)分發(fā)模塊 消息服務(wù)分發(fā)模塊,是消息服務(wù)中間件系統(tǒng)的主體模塊,該模塊需要實(shí)現(xiàn)的功能包括:獲取服務(wù)配置信息、消息解析、消息分發(fā),包括訂閱請(qǐng)求的轉(zhuǎn)發(fā)和訂閱數(shù)據(jù)的轉(zhuǎn)發(fā)、相同請(qǐng)求處理、特殊訂閱處理或過濾處理以及訂閱信息注冊(cè)及取消訂閱; 消息服務(wù)分發(fā)模塊具體實(shí)現(xiàn)流程為: (1)初始化運(yùn)行環(huán)境,獲取服務(wù)配置信息,包括服務(wù)類型、服務(wù)提供方地址、采用的通信方式以及服務(wù)自動(dòng)探測周期,配置信息記錄到服務(wù)轉(zhuǎn)發(fā)表中; (2)消息服務(wù)分發(fā)模塊接收消息; (3)消息服務(wù)分發(fā)模塊對(duì)消息進(jìn)行解析,獲取消息類型以及消息服務(wù)碼; (4)消息服務(wù)分發(fā)模塊根據(jù)消息類型及服務(wù)碼進(jìn)行相應(yīng)的處理,基本消息類型包括:請(qǐng)求消息、響應(yīng)消息、取消訂閱消息以及探測消息,消息類型可根據(jù)業(yè)務(wù)需要進(jìn)行擴(kuò)展;如果接收到的消息類型是請(qǐng)求消息,并且注冊(cè)列表中沒有該類型的請(qǐng)求或者請(qǐng)求參數(shù)不相同,則根據(jù)服務(wù)轉(zhuǎn)發(fā)表將消息轉(zhuǎn)發(fā)給相應(yīng)的服務(wù)提供方,并將該訂閱信息寫入注冊(cè)列表;另外,如果已有該類型的請(qǐng)求,但超過某個(gè)時(shí)間閥值未收到響應(yīng),消息服務(wù)分發(fā)夠?qū)⒅匕l(fā)該訂閱請(qǐng)求,如果是響應(yīng)消息,則根據(jù)服務(wù)碼以及注冊(cè)列表將消息返回給相應(yīng)的訂閱者;數(shù)據(jù)回返時(shí)根據(jù)注冊(cè)列表中的過濾條件選擇回返方式,回返方式可自定義;如果是取消訂閱消息,則將該訂閱者從注冊(cè)列表中刪除,當(dāng)注冊(cè)列表為空時(shí),消息服務(wù)分發(fā)模塊將向該類型的消息服務(wù)提供方發(fā)送取消訂閱消息;如果是探測消息,則提示服務(wù)提供方正常運(yùn)行,并根據(jù)業(yè)務(wù)需求進(jìn)行相關(guān)處理; 消息服務(wù)分發(fā)模塊包含服務(wù)探測機(jī)制,當(dāng)某個(gè)類型的請(qǐng)求超過某個(gè)閥值未收到響應(yīng)時(shí),消息服務(wù)分發(fā)模塊將自動(dòng)向服務(wù)端發(fā)送該類型的訂閱請(qǐng)求,超時(shí)閥值可根據(jù)不同的服務(wù)需求進(jìn)行獨(dú)立設(shè)置; 消息服務(wù)分發(fā)模塊各類功能如下: (1)CMsgDispatchMgr類:初始化運(yùn)行環(huán)境,提供服務(wù)總接口 ; (2)CMsgParser類:消息解析,獲取消息服務(wù)碼等必要信息 (3)SMsgHead類:定義消息解析結(jié)構(gòu),可根據(jù)業(yè)務(wù)擴(kuò)展; (4)CMsgSubscribeMgr類:訂閱請(qǐng)求注冊(cè)及轉(zhuǎn)發(fā)、響應(yīng)消息分發(fā)以及其他各類型消息處理; (5)CSubscribe類:定義訂閱者注冊(cè)信息格式,包括訂閱者地址、過濾參數(shù)等必要信息; (6)CMsgReqSendFactory類:訂閱請(qǐng)求信息發(fā)送方式管理; (7)CMsgSubResponseHandler類:定義訂閱請(qǐng)求信息發(fā)送接口,便于自定義訂閱請(qǐng)求消息發(fā)送方式; (8)CMsgSendHandlerO類及CMsgSendHandlerl類:實(shí)例化的訂閱請(qǐng)求信息發(fā)送方式; (9)CMsgReqSendFactory類:響應(yīng)數(shù)據(jù)回返方式管理; (10)CMsgSendHandle類:訂閱響應(yīng)消息回返方式接口,便于自定義響應(yīng)信息回返方式; (11)CDetailMsgHandlerO類及CDetailMsgHandlerl類:實(shí)例化的響應(yīng)數(shù)據(jù)回返方式類; 3)消息服務(wù)發(fā)布模塊 消息服務(wù)發(fā)布模塊主要實(shí)現(xiàn)訂閱請(qǐng)求的接收、解析以及訂閱數(shù)據(jù)的回返,消息服務(wù)發(fā)布模塊工作流程如下: (O消息服務(wù)發(fā)布模塊接收消息; (2)消息服務(wù)發(fā)布模塊對(duì)消息進(jìn)行解析,獲取該請(qǐng)求的服務(wù)碼及消息類型; (3)如果是訂閱請(qǐng)求消息,消息服務(wù)發(fā)布模塊根據(jù)該服務(wù)碼查找本服務(wù)的訂閱請(qǐng)求注冊(cè)列表,如果已經(jīng)存在該類型的請(qǐng)求,則不進(jìn)行處理,否則將該訂閱請(qǐng)求注冊(cè)登記到訂閱請(qǐng)求注冊(cè)列表中,并將訂閱請(qǐng)求提供給服務(wù)提供方; (4)如果接收到探測消息,則根據(jù)消息服務(wù)碼查找本服務(wù)的訂閱請(qǐng)求注冊(cè)列表,如果已經(jīng)存在該類型的請(qǐng)求,則返回探測響應(yīng)消息;否則,解析探測消息,獲取訂閱請(qǐng)求信息,并將該訂閱請(qǐng)求注冊(cè)登記到本服務(wù)的訂閱請(qǐng)求注冊(cè)列表中,并將訂閱請(qǐng)求提供給服務(wù)提供方; 消息服務(wù)發(fā)布模塊的類功能是CPubSubServer類:實(shí)現(xiàn)消息接收、解析以及響應(yīng)數(shù)據(jù)回返。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征是:設(shè)置消息訂閱接口,按照規(guī)定格式發(fā)送訂閱請(qǐng)求,訂閱請(qǐng)求格式規(guī)定如下: 報(bào)文頭+服務(wù)碼+過濾參數(shù)+消息標(biāo)記 報(bào)文頭為協(xié)議報(bào)文頭,長度根據(jù)采用的協(xié)議進(jìn)行規(guī)定;服務(wù)碼可根據(jù)實(shí)際業(yè)務(wù)需求進(jìn)行定義,長度根據(jù)需要設(shè)置;過濾參數(shù)用于區(qū)分同類型請(qǐng)求不同請(qǐng)求參數(shù)的訂閱請(qǐng)求,其格式可根據(jù)實(shí)際業(yè)務(wù)進(jìn)行自定義;消息標(biāo)記用于區(qū)別各類消息類型及業(yè)務(wù)所需的消息標(biāo)記。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征是:將服務(wù)進(jìn)行分類,不同請(qǐng)求者同一類型、相同請(qǐng)求參數(shù)的訂閱請(qǐng)求條件性向服務(wù)提供方發(fā)送,默認(rèn)發(fā)送條件為: (1)沒有該類型的訂閱請(qǐng)求; (2)有該類型的訂閱請(qǐng)求,但請(qǐng)求參數(shù)不同; (3)有該類型的同請(qǐng)求參數(shù)的請(qǐng)求,但超過預(yù)定時(shí)間閥值未收到響應(yīng)消息; 發(fā)送條件可根據(jù)實(shí)際業(yè)務(wù)需要進(jìn)行擴(kuò)展,預(yù)定時(shí)間閥值不同服務(wù)可獨(dú)立設(shè)置。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征是:消息服務(wù)分發(fā)模塊采用超時(shí)自動(dòng)探測機(jī)制,對(duì)超過預(yù)定時(shí)間閥值未收到響應(yīng)消息的服務(wù)進(jìn)行探測。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征是:消息服務(wù)分發(fā)模塊轉(zhuǎn)發(fā)、分發(fā)訂閱請(qǐng)求及響應(yīng)消息時(shí),可采用自定義方式進(jìn)行發(fā)送消息。
【文檔編號(hào)】H04L29/08GK104243611SQ201410516976
【公開日】2014年12月24日 申請(qǐng)日期:2014年9月30日 優(yōu)先權(quán)日:2014年9月30日
【發(fā)明者】馬駿, 邵兵, 喬富龍 申請(qǐng)人:浪潮軟件股份有限公司