本技術(shù)涉及數(shù)據(jù)處理,尤其涉及報文時序控制方法及裝置。
背景技術(shù):
1、票據(jù)作為一種具有多種業(yè)務(wù)要素的介質(zhì),存在復(fù)雜的內(nèi)部處理過程和對外交互邏輯?;谕黄睋?jù)可能會產(chǎn)生多種業(yè)務(wù)報文,同一票據(jù)產(chǎn)生的業(yè)務(wù)報文需按照業(yè)務(wù)邏輯的順序來處理。但實際生產(chǎn)中,經(jīng)常出現(xiàn)接收到的業(yè)務(wù)報文順序混亂的情況,系統(tǒng)會先處理先接收到的業(yè)務(wù)報文,這樣并未按照業(yè)務(wù)邏輯的順序來處理業(yè)務(wù)報文,會導(dǎo)致當(dāng)前票據(jù)的狀態(tài)異常。目前對于此種情況的處理方式是,結(jié)合經(jīng)驗的已知的亂序場景,在業(yè)務(wù)報文處理時增加了對亂序的判斷,當(dāng)后序業(yè)務(wù)報文被提前處理,且滿足亂序的處理結(jié)果時,前序業(yè)務(wù)報文的邏輯中會加入特殊處理,如回滾狀態(tài)或者插入要素等。
2、上述處理方式,不是一個體系化的解決方案,是一種經(jīng)驗集合,由于增加了額外的亂序業(yè)務(wù)報文的判斷以及邏輯處理,導(dǎo)致數(shù)據(jù)庫的訪問次數(shù)較多,內(nèi)部邏輯的復(fù)雜度也較高,從而增加了交易耗時和系統(tǒng)開銷。
3、因此,目前亟需一種方案,用以提高對亂序業(yè)務(wù)報文的處理效率。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供的報文時序控制方法及裝置,用以提高對亂序業(yè)務(wù)報文的處理效率。
2、第一方面,本技術(shù)提供一種報文時序控制方法,應(yīng)用于客戶端,該方法包括:獲取業(yè)務(wù)報文;將所述業(yè)務(wù)報文發(fā)送至服務(wù)端;接收所述服務(wù)端基于所述業(yè)務(wù)報文的查詢結(jié)果;所述查詢結(jié)果表征所述業(yè)務(wù)報文的前序業(yè)務(wù)報文是否被處理;若所述業(yè)務(wù)報文的前序業(yè)務(wù)報文已被處理,則將所述業(yè)務(wù)報文的狀態(tài)修改為第一狀態(tài);否則,將所述業(yè)務(wù)報文的狀態(tài)修改為第二狀態(tài);對第一狀態(tài)的業(yè)務(wù)報文進(jìn)行相應(yīng)的業(yè)務(wù)處理。
3、上述技術(shù)方案中,客戶端模擬一個業(yè)務(wù)不敏感的報文驅(qū)動,不間斷的將收到的業(yè)務(wù)報文法發(fā)往服務(wù)端,服務(wù)端只專注于查詢業(yè)務(wù)報文的前序業(yè)務(wù)報文是否已被處理,無需冗余的場景判斷和業(yè)務(wù)邏輯修正,兩者交互協(xié)作,可以避免業(yè)務(wù)報文處理順序混亂的問題,并且對亂序業(yè)務(wù)報文的處理效率較高。
4、在一種可能的設(shè)計中,新獲取的業(yè)務(wù)報文的狀態(tài)為所述第二狀態(tài);所述將所述業(yè)務(wù)報文發(fā)送至服務(wù)端,包括:將所述第二狀態(tài)的業(yè)務(wù)報文發(fā)送至服務(wù)端,并將所述業(yè)務(wù)報文的狀態(tài)修改為第三狀態(tài);所述第三狀態(tài)表征所述業(yè)務(wù)報文在所述服務(wù)端處理。
5、上述技術(shù)方案中,將已發(fā)送至服務(wù)端的業(yè)務(wù)報文的狀態(tài)修改為第三狀態(tài),以避免高并發(fā)下,將一個業(yè)務(wù)報文發(fā)送至多個服務(wù)端重復(fù)處理的情況發(fā)生。
6、在一種可能的設(shè)計中,所述將所述業(yè)務(wù)報文的狀態(tài)修改為第二狀態(tài)之后,還包括:每設(shè)定間隔時間,重新將所述業(yè)務(wù)報文發(fā)送至服務(wù)端,直至所述業(yè)務(wù)報文的狀態(tài)被修改為第一狀態(tài)或達(dá)到重試上限;所述設(shè)定間隔時間根據(jù)重試次數(shù)確定;將達(dá)到所述重試上限的業(yè)務(wù)報文的狀態(tài)修改為第四狀態(tài);所述第四狀態(tài)表征所述業(yè)務(wù)報文異常。
7、上述技術(shù)方案中,將第二狀態(tài)的業(yè)務(wù)報文重新發(fā)送至服務(wù)端的間隔時間受到重試次數(shù)的影響。由于重發(fā)次數(shù)越多,該報文的狀態(tài)發(fā)生變化的可能性越小(其前序報文由未被處理轉(zhuǎn)為已被處理的可能性越小),因此,重發(fā)次數(shù)越多,重發(fā)的間隔時間越長,以避免計算資源的浪費(fèi)。
8、在一種可能的設(shè)計中,所述將所述業(yè)務(wù)報文發(fā)送至服務(wù)端之前,還包括:根據(jù)所述業(yè)務(wù)報文的種類和/或業(yè)務(wù)場景,基于業(yè)務(wù)處理邏輯確定所述業(yè)務(wù)報文是否存在前序業(yè)務(wù)報文;所述將所述業(yè)務(wù)報文發(fā)送至服務(wù)端,包括:將存在前序業(yè)務(wù)報文的業(yè)務(wù)報文發(fā)送至服務(wù)端。
9、上述技術(shù)方案中,在將業(yè)務(wù)報文發(fā)送至服務(wù)端之前,判斷該業(yè)務(wù)報文是否存在前序報文,僅將存在前序報文的業(yè)務(wù)報文發(fā)送至服務(wù)端,節(jié)省了服務(wù)端向數(shù)據(jù)庫查詢的次數(shù),提高數(shù)據(jù)庫的查詢效率。
10、第二方面,本技術(shù)提供另一種報文時序控制方法,應(yīng)用于服務(wù)端,該方法包括:接收客戶端發(fā)送的業(yè)務(wù)報文;確定所述業(yè)務(wù)報文的前序業(yè)務(wù)報文是否被處理;若被處理,則返回給所述客戶端第一標(biāo)識,所述第一標(biāo)識表征所述業(yè)務(wù)報文的前序業(yè)務(wù)報文被處理;否則;返回給所述客戶端第二標(biāo)識,所述第二標(biāo)識表征所述業(yè)務(wù)報文的前序業(yè)務(wù)報文未被處理。
11、上述技術(shù)方案中,客戶端模擬一個業(yè)務(wù)不敏感的報文驅(qū)動,不間斷的將收到的業(yè)務(wù)報文法發(fā)往服務(wù)端,服務(wù)端只專注于基查詢業(yè)務(wù)報文的前序業(yè)務(wù)報文是否已被處理于業(yè)務(wù)報文的查詢結(jié)果,無需冗余的場景判斷和業(yè)務(wù)邏輯修正。服務(wù)端每次查詢時只查詢一次數(shù)據(jù)庫,即可做出正確判斷反饋,代碼入侵極小,數(shù)據(jù)庫查詢效率高,不會存在冗余邏輯,可以避免業(yè)務(wù)報文處理順序混亂的問題,并且對亂序業(yè)務(wù)報文的處理效率較高。
12、在一種可能的設(shè)計中,所述業(yè)務(wù)報文的前序報文與所述業(yè)務(wù)報文具有同一報文標(biāo)識號,所述確定所述業(yè)務(wù)報文的前序業(yè)務(wù)報文是否被處理,包括:獲取所述業(yè)務(wù)報文中記錄的報文標(biāo)識號;查詢數(shù)據(jù)庫中是否存在所述報文標(biāo)識號對應(yīng)的前序報文;若存在,則表明所述業(yè)務(wù)報文的前序業(yè)務(wù)報文已被處理;若不存在,則表明所述業(yè)務(wù)報文的前序報文未被處理。
13、上述技術(shù)方案中,服務(wù)端通過報文標(biāo)識號只查詢一次數(shù)據(jù)庫,便可確定是否存在報文亂序處理的問題,即判斷出業(yè)務(wù)報文的前序報文是否被處理,代碼入侵極小,數(shù)據(jù)庫查詢效率高,不會存在冗余邏輯,可以避免業(yè)務(wù)報文處理順序混亂的問題。
14、第三方面,本技術(shù)實施例提供一種報文時序控制裝置,該裝置包括:
15、收發(fā)模塊,用于獲取業(yè)務(wù)報文;
16、收發(fā)模塊,用于將所述業(yè)務(wù)報文發(fā)送至服務(wù)端;
17、收發(fā)模塊,還用于接收所述服務(wù)端基于所述業(yè)務(wù)報文的查詢結(jié)果;所述查詢結(jié)果表征所述業(yè)務(wù)報文的前序業(yè)務(wù)報文是否被處理;
18、處理模塊,用于若所述業(yè)務(wù)報文的前序業(yè)務(wù)報文已被處理,則將所述業(yè)務(wù)報文的狀態(tài)修改為第一狀態(tài);否則,將所述業(yè)務(wù)報文的狀態(tài)修改為第二狀態(tài);
19、處理模塊,還用于對第一狀態(tài)的業(yè)務(wù)報文進(jìn)行相應(yīng)的業(yè)務(wù)處理。
20、在一種可能的設(shè)計中,新獲取的業(yè)務(wù)報文的狀態(tài)為所述第二狀態(tài);所述收發(fā)模塊在所述將所述業(yè)務(wù)報文發(fā)送至服務(wù)端時,具體用于將所述第二狀態(tài)的業(yè)務(wù)報文發(fā)送至服務(wù)端,并將所述業(yè)務(wù)報文的狀態(tài)修改為第三狀態(tài);所述第三狀態(tài)表征所述業(yè)務(wù)報文在所述服務(wù)端處理。
21、在一種可能的設(shè)計中,所述將所述業(yè)務(wù)報文的狀態(tài)修改為第二狀態(tài)之后,所述處理模塊,還用于每設(shè)定間隔時間,重新將所述業(yè)務(wù)報文發(fā)送至服務(wù)端,直至所述業(yè)務(wù)報文的狀態(tài)被修改為第一狀態(tài)或達(dá)到重試上限;所述設(shè)定間隔時間根據(jù)重試次數(shù)確定;將達(dá)到所述重試上限的業(yè)務(wù)報文的狀態(tài)修改為第四狀態(tài);所述第四狀態(tài)表征所述業(yè)務(wù)報文異常。
22、在一種可能的設(shè)計中,所述將所述業(yè)務(wù)報文發(fā)送至服務(wù)端之前,所述處理模塊還用于根據(jù)所述業(yè)務(wù)報文的種類和/或業(yè)務(wù)場景,基于業(yè)務(wù)處理邏輯確定所述業(yè)務(wù)報文是否存在前序業(yè)務(wù)報文;所述收發(fā)模塊將所述業(yè)務(wù)報文發(fā)送至服務(wù)端時,具體用于將存在前序業(yè)務(wù)報文的業(yè)務(wù)報文發(fā)送至服務(wù)端。
23、第四方面,本技術(shù)實施例提供另一種報文時序控制裝置,該裝置包括:
24、收發(fā)模塊,用于接收客戶端發(fā)送的業(yè)務(wù)報文;
25、處理模塊,用于確定所述業(yè)務(wù)報文的前序業(yè)務(wù)報文是否被處理;若被處理,則返回給所述客戶端第一標(biāo)識,所述第一標(biāo)識表征所述業(yè)務(wù)報文的前序業(yè)務(wù)報文被處理;否則;返回給所述客戶端第二標(biāo)識,所述第二標(biāo)識表征所述業(yè)務(wù)報文的前序業(yè)務(wù)報文未被處理。
26、在一種可能的設(shè)計中,所述業(yè)務(wù)報文的前序報文與所述業(yè)務(wù)報文具有同一報文標(biāo)識號,所述處理模塊在確定所述業(yè)務(wù)報文的前序業(yè)務(wù)報文是否被處理時,具體用于獲取所述業(yè)務(wù)報文中記錄的報文標(biāo)識號;查詢數(shù)據(jù)庫中是否存在所述報文標(biāo)識號對應(yīng)的前序報文;若存在,則表明所述業(yè)務(wù)報文的前序業(yè)務(wù)報文已被處理;若不存在,則表明所述業(yè)務(wù)報文的前序報文未被處理。
27、第五方面,本技術(shù)實施例還提供一種計算設(shè)備,包括:
28、存儲器,用于存儲程序指令;
29、處理器,用于調(diào)用所述存儲器中存儲的程序指令,按照獲得的程序指令執(zhí)行如第一方面的任一種可能的設(shè)計中所述的方法。
30、第六方面,本技術(shù)實施例還提供一種計算機(jī)可讀存儲介質(zhì),其中存儲有計算機(jī)可讀指令,當(dāng)計算機(jī)讀取并執(zhí)行所述計算機(jī)可讀指令時,使得上述第一方面的任一種可能的設(shè)計中所述的方法實現(xiàn)。
31、第七方面,本技術(shù)實施例還提供一種計算機(jī)程序產(chǎn)品,包括計算機(jī)可讀指令,當(dāng)計算機(jī)可讀指令被處理器執(zhí)行時,使得上述第一方面的任一種可能的設(shè)計中所述的方法實現(xiàn)。