本申請屬于數(shù)據(jù)處理
技術(shù)領(lǐng)域:
,特別涉及一種數(shù)據(jù)報文緩沖通訊方法及裝置。
背景技術(shù):
:應(yīng)用系統(tǒng)通過數(shù)據(jù)報文與外部系統(tǒng)進行通訊傳遞信息。當(dāng)應(yīng)用系統(tǒng)完成內(nèi)部操作后可以向外部系統(tǒng)發(fā)送數(shù)據(jù)報文以進行信息通知、指令請求,外部系統(tǒng)收到數(shù)據(jù)報文后進行相應(yīng)的反饋處理。兩個系統(tǒng)間交互的數(shù)據(jù)報文數(shù)據(jù)量非常巨大,會出現(xiàn)兩邊處理能力不匹配的情況,若處理速度較快的一方不對數(shù)據(jù)報文的發(fā)送速度進行控制會出現(xiàn)速度較慢的一方交易堵塞甚至交易丟失,影響兩個系統(tǒng)間交互的可用性。所以應(yīng)用系統(tǒng)向外發(fā)送數(shù)據(jù)報文要先將數(shù)據(jù)報文放到緩沖池中,通過異步交易將緩沖池中的數(shù)據(jù)報文定時發(fā)出,并且對異步交易的發(fā)送速度進行限制。但如果優(yōu)先級高的數(shù)據(jù)報文也簡單的將其放到緩沖池統(tǒng)一處理可能會影響這類數(shù)據(jù)報文的處理時效。技術(shù)實現(xiàn)要素:本申請?zhí)峁┮环N數(shù)據(jù)報文緩沖通訊方法及裝置,用于解決兩個系統(tǒng)交互時,容易因兩系統(tǒng)處理速度不同而導(dǎo)致數(shù)據(jù)報文丟失,及影響優(yōu)先級高的數(shù)據(jù)報文的處理時效的問題。為了解決上述技術(shù)問題,本申請的一技術(shù)方案為提供一種數(shù)據(jù)報文緩沖通訊方法,包括:探測發(fā)報緩沖隊列的深度;接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文,并確定所述數(shù)據(jù)報文的優(yōu)先級;判斷所述發(fā)報緩沖隊列的深度是否大于或等于隊列深度閾值,判斷所述數(shù)據(jù)報文的優(yōu)先級是否大于級別閾值,若判斷結(jié)果都為是,則直接發(fā)送所述數(shù)據(jù)報文,若其中一判斷結(jié)果為否,則將所述數(shù)據(jù)報文加入至所述發(fā)報緩沖隊列中,以根據(jù)所述發(fā)報緩沖隊列發(fā)送數(shù)據(jù)報文。本申請另一技術(shù)方案為提供一種數(shù)據(jù)報文緩沖通訊裝置,包括:隊列深度探測模塊、接收模塊、路徑選擇模塊、發(fā)報緩沖模塊及發(fā)報模塊;所述隊列深度探測模塊用于探測發(fā)報緩沖隊列的深度;所述接收模塊用于接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文,并確定所述數(shù)據(jù)報文的優(yōu)先級;所述路徑選擇模塊用于判斷所述發(fā)報緩沖隊列的深度是否大于或等于隊列深度閾值,判斷所述數(shù)據(jù)報文的優(yōu)先級是否大于級別閾值,若判斷結(jié)果都為是,則由所述發(fā)報模塊直接發(fā)送所述數(shù)據(jù)報文,若其中一判斷結(jié)果為否,則將所述數(shù)據(jù)報文加入至所述發(fā)報緩沖隊列中,由所述發(fā)報緩沖模塊根據(jù)所述發(fā)報緩沖隊列通過所述發(fā)報模塊發(fā)送數(shù)據(jù)報文。本申請通過上述技術(shù)方案能夠防止系統(tǒng)間處理能力不匹配導(dǎo)致處理速度較慢的一方系統(tǒng)出現(xiàn)交易堵塞甚至交易丟失的情況出現(xiàn),在發(fā)報緩沖隊列的深度大于隊列深度閾值時,將優(yōu)先級高(優(yōu)先級大于級別閾值)的數(shù)據(jù)報文不經(jīng)過發(fā)報緩沖隊列而直接發(fā)送出去,能夠保障優(yōu)先級高的數(shù)據(jù)報文優(yōu)先發(fā)送處理,體現(xiàn)數(shù)據(jù)報文處理的優(yōu)先級別,在發(fā)報緩沖隊列的深度小于隊列深度閾值時,將優(yōu)先級高的數(shù)據(jù)報文加入至發(fā)報緩沖隊列中,能夠保證優(yōu)先級高的數(shù)據(jù)報文按時發(fā)送的同時不影響普通數(shù)據(jù)報文的發(fā)送。附圖說明為了更清楚地說明本申請實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請實施例的數(shù)據(jù)報文緩沖通訊方法流程圖;圖2為本申請實施例的發(fā)送發(fā)報緩沖隊列中的數(shù)據(jù)報文的流程圖;圖3為本申請實施例的數(shù)據(jù)報文緩沖通訊裝置結(jié)構(gòu)圖;圖4為本申請實施例的發(fā)報緩沖模塊的結(jié)構(gòu)圖。具體實施方式為了使本申請的技術(shù)特點及效果更加明顯,下面結(jié)合附圖對本申請的技術(shù)方案做進一步說明,本申請也可有其他不同的具體實例來加以說明或?qū)嵤?,任何本領(lǐng)域技術(shù)人員在權(quán)利要求范圍內(nèi)做的等同變換均屬于本申請的保護范疇。在本說明書的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均為開放性的用語,即意指包含但不限于。參考術(shù)語“一個實施例”、“一個具體實施例”、“一些實施例”、“例如”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)或者特點包含于本申請的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。各實施例中涉及的步驟順序用于示意性說明本申請的實施,其中的步驟順序不作限定,可根據(jù)需要作適當(dāng)調(diào)整。如圖1所示,圖1為本申請實施例的數(shù)據(jù)報文緩沖通訊方法流程圖。本實施例能夠根據(jù)發(fā)報緩沖隊列的深度及數(shù)據(jù)報文的優(yōu)先級,判斷數(shù)據(jù)報文是否不通過發(fā)報緩沖隊列而直接發(fā)送出去,能夠保證優(yōu)先級高的數(shù)據(jù)報文按時發(fā)送的同時不影響普通數(shù)據(jù)報文的發(fā)送。具體的,包括:步驟101:探測發(fā)報緩沖隊列的深度。發(fā)報緩沖隊列的深度指的是發(fā)報緩沖隊列中未處理的數(shù)據(jù)報文的筆數(shù)。步驟102:接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文,并確定所述數(shù)據(jù)報文的優(yōu)先級。步驟103:判斷所述發(fā)報緩沖隊列的深度是否大于或等于隊列深度閾值,判斷所述數(shù)據(jù)報文的優(yōu)先級是否大于級別閾值,若判斷結(jié)果都為是,則直接發(fā)送所述數(shù)據(jù)報文至外部系統(tǒng),若其中一判斷結(jié)果為否,則將所述數(shù)據(jù)報文加入至所述發(fā)報緩沖隊列中,以根據(jù)所述發(fā)報緩沖隊列發(fā)送數(shù)據(jù)報文至外部系統(tǒng)。隊列深度閾值可根據(jù)實際優(yōu)先處理優(yōu)先級高(優(yōu)先級大于級別閾值)的數(shù)據(jù)報文情況選定,本申請對其具體取值不做限定。上述過程在應(yīng)用系統(tǒng)將數(shù)據(jù)報文發(fā)送至外部系統(tǒng)的過程中進行,步驟102中,接收到應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文后,還包括對數(shù)據(jù)報文進行數(shù)據(jù)合法性檢查,并將數(shù)據(jù)報文保存至數(shù)據(jù)表中,以便后續(xù)程序調(diào)取。一具體實施例中,數(shù)據(jù)表中存儲的數(shù)據(jù)報文格式如表一:表一字段名稱字段類型報文信息流水號主鍵數(shù)字數(shù)據(jù)報文字符數(shù)據(jù)報文優(yōu)先級數(shù)字登記日期日期登記時間時間其中,報文信息流水號主鍵是唯一標(biāo)識一筆數(shù)據(jù)報文的流水號;數(shù)據(jù)報文為數(shù)據(jù)報文的發(fā)送主體信息;數(shù)據(jù)報文優(yōu)先級為該筆數(shù)據(jù)報文向外部系統(tǒng)發(fā)送的優(yōu)先級,如為普通、緊急兩種;登記日期為存儲數(shù)據(jù)報文記錄的日期;登記時間為存儲數(shù)據(jù)報文記錄的時間。一實施例中,數(shù)據(jù)報文緩沖通訊方法還包括:記錄發(fā)報緩沖隊列中各筆數(shù)據(jù)報文的處理狀態(tài),以便確定哪些數(shù)據(jù)報文還未發(fā)送,具體的,處理狀態(tài)包括:待處理及已處理,可用數(shù)字進行表示,如1表示待處理,2表示已處理。進一步的,為了控制應(yīng)用系統(tǒng)向外發(fā)送數(shù)據(jù)報文的速度,如圖2所示,步驟103中將所述數(shù)據(jù)報文加入至所述發(fā)報緩沖隊列后,根據(jù)所述發(fā)報緩沖隊列發(fā)送數(shù)據(jù)報文包括:步驟201:獲取所述發(fā)報緩沖隊列中處理狀態(tài)為待處理的數(shù)據(jù)報文。步驟202:逐一發(fā)送待處理的數(shù)據(jù)報文,記錄發(fā)送該待處理的數(shù)據(jù)報文的筆數(shù)。具體實施時,可由一計數(shù)器C實現(xiàn)計數(shù),每發(fā)送完一筆數(shù)據(jù)報文后,計數(shù)器C做自加1處理。步驟203:判斷計數(shù)器記錄的筆數(shù)M1是否大于或等于一發(fā)報緩沖筆數(shù)N1,若判斷結(jié)果為是,則休眠預(yù)定時間T1(該預(yù)定時間也可稱為發(fā)報緩沖時間,單位為秒),待休眠結(jié)束后,初始化所述計數(shù)器C為0,判斷發(fā)報緩沖隊列中是否存在待處理的數(shù)據(jù)報文,如果存在,則繼續(xù)逐一發(fā)送待處理的數(shù)據(jù)報文,如果不存在,則發(fā)送完畢。具體實施時,可由專門的數(shù)據(jù)表對發(fā)報緩沖隊列中的數(shù)據(jù)報文進行記錄,其記錄的格式如表二:表二其中,報文信息流水號主鍵為表一中保存的報文流水號主鍵;處理狀態(tài)包含:1-待處理、2-已處理,新的數(shù)據(jù)報文加入發(fā)報緩沖隊列時,該字段記為1-待處理,向外部系統(tǒng)發(fā)送數(shù)據(jù)報文成功后該字段更新為2-已處理;登記日期為新的數(shù)據(jù)報文加入至發(fā)報緩沖隊列的日期;登記時間為新的數(shù)據(jù)報文加入至發(fā)報緩沖隊列的時間;處理日期在新的數(shù)據(jù)報文加入發(fā)報緩沖隊列時記為1900-01-01,向外部系統(tǒng)發(fā)送數(shù)據(jù)報文成功后該字段更新為當(dāng)前日期;字段處理時間在新的數(shù)據(jù)報文加入發(fā)報緩沖隊列時記為00:00:00,向外部系統(tǒng)發(fā)送報文成功后該字段更新為當(dāng)前時間。進一步的,每發(fā)送完一待處理的數(shù)據(jù)報文后,還包括將表二中數(shù)據(jù)報文的處理狀態(tài)由待處理更新為已處理。本申請?zhí)峁┑臄?shù)據(jù)報文通訊方法能防止系統(tǒng)間處理能力不匹配導(dǎo)致處理速度較慢的一方系統(tǒng)出現(xiàn)交易堵塞甚至交易丟失的情況出現(xiàn),在發(fā)報緩沖隊列的深度大于隊列深度閾值時,將優(yōu)先級高(優(yōu)先級大于級別閾值)的數(shù)據(jù)報文不經(jīng)過發(fā)報緩沖隊列而直接發(fā)送出去,能夠保障優(yōu)先級高的數(shù)據(jù)報文優(yōu)先發(fā)送處理,體現(xiàn)數(shù)據(jù)報文處理的優(yōu)先級別,在發(fā)報緩沖隊列的深度小于隊列深度閾值時,將優(yōu)先級高的數(shù)據(jù)報文存儲至發(fā)報緩沖隊列中,能夠保證優(yōu)先級高的數(shù)據(jù)報文按時發(fā)送的同時不影響普通數(shù)據(jù)報文的發(fā)送?;谕话l(fā)明構(gòu)思,本申請實施例中還提供了一種數(shù)據(jù)報文緩沖通訊裝置,如下面的實施例所述。由于該裝置解決問題的原理與上述方法相似,因此該裝置的實施可以參見上述方法的實施,重復(fù)之處不再贅述。該裝置可以通過邏輯電路實現(xiàn)運行于智能終端,例如手機、平板電腦等設(shè)備中,或者以功能模塊的方式由軟件實現(xiàn)各部件的功能,運行于所述智能終端上。具體的,如圖3所示,該裝置包括:隊列深度探測模塊303、接收模塊301、路徑選擇模塊302、發(fā)報緩沖模塊304及發(fā)報模塊305。所述隊列深度探測模塊303用于探測發(fā)報緩沖隊列的深度。所述接收模塊301連接應(yīng)用系統(tǒng),用于接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文,并確定所述數(shù)據(jù)報文的優(yōu)先級。所述路徑選擇模塊302用于判斷所述發(fā)報緩沖隊列的深度是否大于或等于隊列深度閾值,判斷所述數(shù)據(jù)報文的優(yōu)先級是否大于級別閾值,若判斷結(jié)果都為是,則由所述發(fā)報模塊305直接發(fā)送所述數(shù)據(jù)報文至外部系統(tǒng),若其中一判斷結(jié)果為否,則將所述數(shù)據(jù)報文加入至所述發(fā)報緩沖隊列中,由所述發(fā)報緩沖模塊304根據(jù)所述發(fā)報緩沖隊列通過所述發(fā)報模塊305發(fā)送數(shù)據(jù)報文。所述發(fā)報模塊305連接外部系統(tǒng),用于發(fā)送數(shù)據(jù)報文。一實施例中,接收模塊301包括數(shù)據(jù)接收單元及數(shù)據(jù)報文存儲單元,數(shù)據(jù)接收單元用于接收應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文,數(shù)據(jù)報文存儲單元用于存儲應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)報文,存儲格式如上述表一所示。進一步的,如圖4所示,所述發(fā)報緩沖模塊304包括發(fā)報緩沖隊列記錄單元401,用于記錄發(fā)報緩沖隊列中各筆報文的處理狀態(tài)。除了記錄各筆報文的處理狀態(tài)外,還記錄報文信息流水號主鍵、登記日期、登記時間、處理日期及處理時間等,具體如上述表二所示。獲取單元402,用于獲取所述發(fā)報緩沖隊列中處理狀態(tài)為待處理的數(shù)據(jù)報文。發(fā)報處理單元403,用于逐一發(fā)送待處理的數(shù)據(jù)報文,記錄發(fā)送該待處理的數(shù)據(jù)報文的筆數(shù);判斷所述發(fā)送該待處理的數(shù)據(jù)報文的筆數(shù)是否大于或等于一發(fā)報緩沖筆數(shù),若判斷結(jié)果為是,則休眠預(yù)定時間,待休眠結(jié)束后判斷發(fā)報緩沖隊列中是否存在待處理的數(shù)據(jù)報文,如果存在,則繼續(xù)逐一發(fā)送待處理的數(shù)據(jù)報文。進一步的,每發(fā)送完一待處理的數(shù)據(jù)報文后,所述發(fā)報緩沖隊列記錄單元401還用于將該數(shù)據(jù)報文的處理狀態(tài)由待處理更新為已處理。本申請?zhí)峁┑臄?shù)據(jù)報文通訊裝置,在發(fā)報緩沖隊列的深度大于隊列深度閾值時,將優(yōu)先級高(優(yōu)先級大于級別閾值)的數(shù)據(jù)報文不經(jīng)過發(fā)報緩沖隊列而直接發(fā)送出去,能夠保障優(yōu)先級高的數(shù)據(jù)報文優(yōu)先發(fā)送處理,體現(xiàn)數(shù)據(jù)報文處理的優(yōu)先級別,在發(fā)報緩沖隊列的深度小于隊列深度閾值時,將優(yōu)先級高的數(shù)據(jù)報文加入至發(fā)報緩沖隊列中,能夠保證優(yōu)先級高的數(shù)據(jù)報文按時發(fā)送的同時不影響普通數(shù)據(jù)報文的發(fā)送。為了更清楚說明本申請技術(shù)方案,下面以一具體實施例進行詳細說明,設(shè)隊列深度閥值為500筆,當(dāng)前發(fā)報緩沖隊列深度為498筆,發(fā)報緩沖筆數(shù)為50筆,緩沖預(yù)定時間為1s,數(shù)據(jù)報文緩沖通訊的方法包括:步驟1:應(yīng)用系統(tǒng)發(fā)送3筆數(shù)據(jù)報文,接收并存儲數(shù)據(jù)報文記錄如下:表三步驟2:報文信息流水號主鍵為1的報文記錄的處理流程如下:獲取當(dāng)前發(fā)報緩沖隊列深度498,小于隊列深度閾值500;通過表三可知,報文信息流水號主鍵為1的數(shù)據(jù)報文優(yōu)先級為普通,則將報文信息流水號主鍵為1的數(shù)據(jù)報文加入至發(fā)報緩沖隊列,并記錄如下,此時,發(fā)報緩沖隊列深度為499:表四報文信息流水號主鍵處理狀態(tài)登記日期登記時間處理日期處理時間11-待處理2013-07-0110:00:001900-01-0100:00:00需要說明的是,表四中僅列出了新加入的數(shù)據(jù)報文記錄,未列出現(xiàn)有的498條記錄。在未接收到緊急優(yōu)先權(quán)的數(shù)據(jù)報文時,逐一發(fā)送上表中對應(yīng)的待處理數(shù)據(jù)報文。步驟3:報文信息流水號主鍵為2的報文記錄的處理流程如下:獲取當(dāng)前發(fā)報緩沖隊列深度499,小于隊列深度閾值500;通過表三可知,報文信息流水號主鍵為2的數(shù)據(jù)報文優(yōu)先級為緊急,則將報文信息流水號主鍵為2的數(shù)據(jù)報文加入至發(fā)報緩沖隊列,并記錄如下,此時,發(fā)報緩沖隊列深度為500:更新的表四:報文信息流水號主鍵處理狀態(tài)登記日期登記時間處理日期處理時間11-待處理2013-07-0110:00:001900-01-0100:00:0021-待處理2013-07-0110:00:011900-01-0100:00:00步驟4:報文信息流水號主鍵為3的報文記錄的處理流程如下:獲取當(dāng)前發(fā)報緩沖隊列深度500,等于隊列深度閾值500;通過表三可知,報文信息流水號主鍵為3的數(shù)據(jù)報文優(yōu)先級為緊急,則直接將報文信息流水號主鍵為3的數(shù)據(jù)報文發(fā)送給外部系統(tǒng)。步驟5:從表三中獲取總共500筆(包含報文信息流水號主鍵為1、2的兩筆記錄)處理狀態(tài)為1-未處理的記錄進行發(fā)報處理,逐一將數(shù)據(jù)報文發(fā)送到外部系統(tǒng),完成發(fā)報處理后,報文信息流水號主鍵為1、2的兩筆記錄在表四中的記錄為:報文信息流水號主鍵處理狀態(tài)登記日期登記時間處理日期處理時間12-已處理2013-07-0110:00:002013-07-0110:01:0022-已處理2013-07-0110:00:012013-07-0110:01:01鑒于發(fā)報緩沖筆數(shù)為50筆,緩沖預(yù)定時間為1s,則500筆交易需要進行500/50=10次,共10s的休眠。本申請在發(fā)報緩沖隊列的深度大于隊列深度閾值時,將優(yōu)先級高(優(yōu)先級大于級別閾值)的數(shù)據(jù)報文不經(jīng)過發(fā)報緩沖隊列而直接發(fā)送出去,能夠保障優(yōu)先級高的數(shù)據(jù)報文優(yōu)先發(fā)送處理,體現(xiàn)數(shù)據(jù)報文處理的優(yōu)先級別,在發(fā)報緩沖隊列的深度小于隊列深度閾值時,將優(yōu)先級高的數(shù)據(jù)報文存儲至發(fā)報緩沖隊列中,能夠保證優(yōu)先級高的數(shù)據(jù)報文按時發(fā)送的同時不影響普通數(shù)據(jù)報文的發(fā)送。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。以上所述僅用于說明本申請的技術(shù)方案,任何本領(lǐng)域普通技術(shù)人員均可在不違背本申請的精神及范疇下,對上述實施例進行修飾與改變。因此,本申請的權(quán)利保護范圍應(yīng)視權(quán)利要求范圍為準(zhǔn)。當(dāng)前第1頁1 2 3