一種任務(wù)調(diào)度處理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種任務(wù)調(diào)度處理方法,包括:從消息中間件接收申請任務(wù)消息,所述申請任務(wù)消息包括主題名稱;當判斷所述申請任務(wù)消息滿足預(yù)置的過濾條件時,在數(shù)據(jù)庫中查詢該任務(wù)的執(zhí)行狀態(tài),如果當前沒有應(yīng)用程序正在處理該任務(wù),則指定目標應(yīng)用程序執(zhí)行本次任務(wù),發(fā)布以所述主題名稱為主題的任務(wù)執(zhí)行消息到所述消息中間件。本發(fā)明還提供了一種任務(wù)調(diào)度處理系統(tǒng)。采用本發(fā)明的技術(shù)方案可避免在集群系統(tǒng)并發(fā)操作時產(chǎn)生數(shù)據(jù)重復(fù)的問題。
【專利說明】一種任務(wù)調(diào)度處理方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及集群業(yè)務(wù)處理【技術(shù)領(lǐng)域】,尤其涉及一種任務(wù)調(diào)度處理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著企業(yè)級管理系統(tǒng)用戶數(shù)量的不斷增大,為滿足管理系統(tǒng)的并發(fā)量,一般各個公司會采用硬件或軟件集群的方式來部署系統(tǒng)。然而集群并不是線程安全的,集群系統(tǒng)并發(fā)時會產(chǎn)生諸如系統(tǒng)定時任務(wù)處理、關(guān)鍵數(shù)據(jù)重復(fù)等問題。雖然目前部分問題可通過各種“鎖”的機制解決,但這種機制并不能完全解決上述問題。
[0003]對于收單業(yè)務(wù)系統(tǒng)來說,收單業(yè)務(wù)中包含各種各樣的單據(jù)號信息,比如交易流水號、商戶號、終端號以及其他各類流程數(shù)據(jù)單號。這些單號都有嚴格的編碼規(guī)則,并且在各自的領(lǐng)域中是唯一標識,一旦出現(xiàn)重復(fù)情況將對收單業(yè)務(wù)管理系統(tǒng)產(chǎn)生巨大的影響。
【發(fā)明內(nèi)容】
[0004]本發(fā)明為解決上述問題,提出了一種任務(wù)調(diào)度處理方法及系統(tǒng),通過將傳統(tǒng)的任務(wù)執(zhí)行過程拆分成兩部分,解決系統(tǒng)集群部署產(chǎn)生的并發(fā)問題。
[0005]在一個方面,本發(fā)明提供了一種任務(wù)調(diào)度處理方法,包括以下步驟:
[0006]從消息中間件接收申請任務(wù)消息,申請任務(wù)消息包括主題名稱;
[0007]當判斷申請任務(wù)消息滿足預(yù)置的過濾條件時,在數(shù)據(jù)庫中查詢該任務(wù)的執(zhí)行狀態(tài);如果當前沒有應(yīng)用程序正在執(zhí)行該任務(wù),則指定目標應(yīng)用程序執(zhí)行該任務(wù),發(fā)布以該主題名稱為主題的任務(wù)執(zhí)行消息到消息中間件。
[0008]在一個方面,本發(fā)明還提供了一種任務(wù)調(diào)度處理方法,包括以下步驟:
[0009]對數(shù)據(jù)庫中的定時任務(wù)的任務(wù)規(guī)則進行解析,得到該定時任務(wù),該定時任務(wù)包括主題名稱、執(zhí)行時間和執(zhí)行對象;
[0010]當?shù)竭_該執(zhí)行時間時,從執(zhí)行對象中指定應(yīng)用程序作為目標應(yīng)用程序,向消息中間件發(fā)布任務(wù)執(zhí)行消息,該任務(wù)執(zhí)行消息包括主題名稱和目標應(yīng)用程序。
[0011]在另一個方面,本發(fā)明提供了一種任務(wù)調(diào)度處理系統(tǒng),包括:
[0012]消息接收器,用于從消息中間件接收申請任務(wù)消息,申請任務(wù)消息包括主題名稱;
[0013]消息過濾器,用于根據(jù)預(yù)置的過濾條件過濾申請任務(wù)消息;
[0014]運算器,用于當申請任務(wù)消息通過消息過濾器時,在數(shù)據(jù)庫中查詢該任務(wù)的執(zhí)行狀態(tài),如果當前沒有應(yīng)用程序正在執(zhí)行該任務(wù),則指定目標應(yīng)用程序執(zhí)行該任務(wù);
[0015]消息發(fā)布器,用于發(fā)布以該主題名稱為主題的任務(wù)執(zhí)行消息到消息中間件上。
[0016]在另一方面,本發(fā)明還提供了一種任務(wù)調(diào)度處理系統(tǒng),包括:
[0017]規(guī)則解析器,用于對數(shù)據(jù)庫中的定時任務(wù)的任務(wù)規(guī)則進行解析,得到定時任務(wù),該定時任務(wù)包括主題名稱、執(zhí)行時間和執(zhí)行對象;
[0018]運算器,用于當?shù)竭_執(zhí)行時間時,從執(zhí)行對象中指定應(yīng)用程序作為目標應(yīng)用程序;
[0019]消息發(fā)布器,用于向消息中間件發(fā)布任務(wù)執(zhí)行消息,該任務(wù)執(zhí)行消息包括所述主題名稱以及所述目標應(yīng)用程序。
[0020]本發(fā)明采用JMS機制的發(fā)布者/訂閱者模式,通過將各個單號任務(wù)生成與單號任務(wù)實際執(zhí)行兩個步驟分開處理,經(jīng)任務(wù)調(diào)度以后再確定實際執(zhí)行任務(wù)的應(yīng)用程序。采用本發(fā)明的技術(shù)方案可以避免在集群系統(tǒng)并發(fā)操作時產(chǎn)生數(shù)據(jù)重復(fù)的問題。
【專利附圖】
【附圖說明】
[0021]下面將參照附圖描述本發(fā)明的具體實施例,其中:
[0022]圖1示出了本發(fā)明實施例的任務(wù)調(diào)度處理方法的方法流程圖;
[0023]圖2示出了本發(fā)明另一實施例的任務(wù)調(diào)度處理方法的方法流程圖;
[0024]圖3示出了本發(fā)明實施例的任務(wù)調(diào)度處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0025]圖4示出了本發(fā)明另一實施例的任務(wù)調(diào)度處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0026]圖5示出了傳統(tǒng)商戶號生成任務(wù)的處理流程;
[0027]圖6示出了本發(fā)明實施例商戶號生成任務(wù)的處理流程。
【具體實施方式】
[0028]為了使本發(fā)明的技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本發(fā)明的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本發(fā)明的一部分實施例,而不是所有實施例的窮舉。
[0029]為了解決系統(tǒng)集群部署時產(chǎn)生的并發(fā)問題,本發(fā)明實施例提出了一種任務(wù)分配調(diào)度處理方法及系統(tǒng),是基于Java消息服務(wù)(JMS, Java Message Service)機制進行任務(wù)調(diào)度的處理。
[0030]其中,Java消息服務(wù)(JMS,Java Message Service)是一個Java平臺中關(guān)于面向消息中間件的應(yīng)用程序編程接口(API, Application Programming Interface),它使得分布式系統(tǒng)的信息通信松散連接,發(fā)送信息的客戶端只需要負責(zé)發(fā)送信息,接收信息的客戶端只需要接收信息,兩個客戶端之間沒有必要同時可用。
[0031]JMS支持兩種消息模式:一種是點對點模式,另一種是發(fā)布者/訂閱者模式(publish/subscriber Messaging)。本發(fā)明實施例是基于發(fā)布者/訂閱者模式提出的技術(shù)方案。發(fā)布者/訂閱者模式用于多接收客戶端方式,可能存在多個接收客戶端并且接收客戶端與發(fā)送客戶端存在時間上的依賴,一個接收端只能接收自身創(chuàng)建以后發(fā)送客戶端發(fā)送的信息。
[0032]由于在實際應(yīng)用中,任務(wù)發(fā)起可以由各個應(yīng)用程序向任務(wù)調(diào)度處理系統(tǒng)發(fā)起,也可以由任務(wù)調(diào)度處理系統(tǒng)自行發(fā)起,由任務(wù)調(diào)度處理系統(tǒng)自行發(fā)起的一般為定時任務(wù),解析得到該任務(wù)后到達預(yù)定時間自行發(fā)起任務(wù)。因此,針對不同的任務(wù)發(fā)起者本發(fā)明提出了一種任務(wù)調(diào)度處理方法及系統(tǒng)。
[0033]對于各應(yīng)用程序向任務(wù)調(diào)度處理系統(tǒng)申請任務(wù)的情況,本發(fā)明實施例提供了一種任務(wù)調(diào)度處理方法,圖1示出了該任務(wù)調(diào)度處理方法的流程圖,具體包括以下步驟:
[0034]S101、從消息中間件接收申請任務(wù)消息,該申請任務(wù)消息中包括有主題名稱。[0035]該任務(wù)是在系統(tǒng)初始化階段對數(shù)據(jù)庫中的任務(wù)規(guī)則進行解析得到的,解析后得到的任務(wù)可能包括:主題名稱、消息方式、執(zhí)行對象、執(zhí)行時間等等。該數(shù)據(jù)庫中包括有各個任務(wù)的任務(wù)規(guī)則以及各任務(wù)的執(zhí)行狀態(tài),在任務(wù)規(guī)則方面定義了各個任務(wù)的指標參數(shù)信息,包括執(zhí)行周期、實行時間和作業(yè)目標等等。
[0036]在解析得到該任務(wù)后,向消息中間件注冊這個任務(wù)消息。其他應(yīng)用程序可以從消息中間件上訂閱該任務(wù)消息,并將自身的唯一標識名稱一同發(fā)布到消息中間件上。本發(fā)明實施例接收訂閱任務(wù)的消息,從而在初始化階段任務(wù)調(diào)度處理系統(tǒng)與各應(yīng)用程序的任務(wù)連接關(guān)系,也即哪個應(yīng)用程序訂閱了哪個任務(wù)。
[0037]當應(yīng)用程序向消息中間件發(fā)起申請該任務(wù)消息時,消息中間件對該申請任務(wù)消息進行廣播,本發(fā)明實施例從消息中間件接收該申請任務(wù)消息。
[0038]S102、根據(jù)預(yù)先設(shè)置的過濾條件判斷該申請任務(wù)消息是否滿足過濾條件,如果不滿足則終止;如果滿足則執(zhí)行下一步驟。
[0039]本發(fā)明實施例過濾原理是根據(jù)Java的反射機制來判斷傳入的參數(shù)對象,參數(shù)對應(yīng)的是字符串String類型,表達式為正則表達式。本發(fā)明實施例還可提供一個MessageSelector接口,用于滿足用戶復(fù)雜的需要編程的過濾條件。
[0040]本發(fā)明實施例根據(jù)預(yù)設(shè)的過濾條件,判斷該申請任務(wù)消息是否為本應(yīng)用程序關(guān)注的內(nèi)容,如果不是則終止;如果是本應(yīng)用程序關(guān)注的內(nèi)容則進行下一步驟。
[0041]S103、在數(shù)據(jù)庫中查詢該任務(wù)的執(zhí)行狀態(tài),判斷是否有應(yīng)用程序正在處理該任務(wù),也即該任務(wù)的任務(wù)狀態(tài)為執(zhí)行中。如果有則等待上一個任務(wù)處理結(jié)束,如果沒有,則執(zhí)行下一步驟。
[0042]S104、指定一個目標應(yīng)用程序去執(zhí)行本次任務(wù),發(fā)起一個以該任務(wù)主題名稱為主題的任務(wù)執(zhí)行消息,下發(fā)任務(wù)執(zhí)行消息(也可稱為作業(yè)指令)到消息中間件上。該目標應(yīng)用程序可以是預(yù)先設(shè)置的,也可以是隨機指定該任務(wù)的執(zhí)行對象的其中一個應(yīng)用程序,本發(fā)明對此不作限制。
[0043]目標應(yīng)用程序接收到該任務(wù)執(zhí)行消息后,判斷是否滿足自身的過濾條件,如果不滿足則說明不是自己關(guān)注的消息,直接丟棄該消息;如果滿足則執(zhí)行該任務(wù),執(zhí)行完成后向數(shù)據(jù)庫中記錄執(zhí)行結(jié)果。本發(fā)明實施例中是通過調(diào)用數(shù)據(jù)庫接口從而實現(xiàn)向該數(shù)據(jù)庫中記錄執(zhí)行結(jié)果,也即目標應(yīng)用程序向任務(wù)調(diào)度處理系統(tǒng)通過數(shù)據(jù)庫接口發(fā)送一條指令,由任務(wù)調(diào)度處理系統(tǒng)在數(shù)據(jù)庫中記錄執(zhí)行結(jié)果。
[0044]基于同一發(fā)明構(gòu)思,對于任務(wù)調(diào)度處理系統(tǒng)自行發(fā)起任務(wù)的情況,本發(fā)明實施例提供了一種任務(wù)調(diào)度處理方法,如圖2所示,具體包括以下步驟:
[0045]S201、對數(shù)據(jù)庫中的定時任務(wù)的任務(wù)規(guī)則進行解析,得到該定時任務(wù)的具體內(nèi)容,該定時任務(wù)包括有任務(wù)的主題名稱、任務(wù)類型、執(zhí)行時間以及執(zhí)行對象(或稱執(zhí)行目標)等信息。
[0046]S202、當?shù)竭_該任務(wù)的執(zhí)行時間時,從該任務(wù)的執(zhí)行對象中指定一個應(yīng)用程序作為目標應(yīng)用程序,向消息中間件發(fā)布任務(wù)執(zhí)行消息。該任務(wù)執(zhí)行消息中包括該任務(wù)的主題名稱以及目標應(yīng)用程序等信息。
[0047]S203、消息中間件對該任務(wù)執(zhí)行消息進行廣播,目標應(yīng)用程序的消息接收器接收到該任務(wù)執(zhí)行消息后,判斷該任務(wù)執(zhí)行消息是否滿足自身預(yù)置的過濾條件,當滿足過濾條件時執(zhí)行該任務(wù),執(zhí)行完成后向數(shù)據(jù)庫記錄執(zhí)行結(jié)果;當不滿足過濾條件時則丟棄該任務(wù)執(zhí)行消息。
[0048]具體舉例如下:
[0049]假設(shè)在數(shù)據(jù)庫中有一條主題名稱為“終端文件同步”的任務(wù)規(guī)則。通過規(guī)則解析器對該任務(wù)規(guī)則進行解析,得出這個任務(wù)是每天(任務(wù)類型:固定頻率)、凌晨1:10(cron表達式:0101**?)、開始執(zhí)行前一天(java的jexlFuntion類方法為Date:addDays (-1))的增量終端數(shù)據(jù)同步。調(diào)度任務(wù)的執(zhí)行目標是一組“bmcp-app”集群應(yīng)用程序中隨機一個(也可以指定具體執(zhí)行目標),包含了任務(wù)失敗重做10次的錯誤處理機制。這樣,當?shù)竭_預(yù)定時間時,就會通過消息發(fā)布器發(fā)起一個主題名稱為“TRIGGER_SCHEDULE_EVENT_CODE”、內(nèi)容為“P0SP_TERM_FILE_EXP0RT”的消息,并且隨機指定“bmcp-app”集群應(yīng)用中某一應(yīng)用程序去執(zhí)行這個任務(wù)。
[0050]對于系統(tǒng)的定時任務(wù),現(xiàn)有技術(shù)中所有應(yīng)用程序都申請數(shù)據(jù)同步任務(wù)時會產(chǎn)生數(shù)據(jù)操作上的沖突。而采用本發(fā)明實施例所提供的任務(wù)調(diào)度處理方法,由任務(wù)調(diào)度處理系統(tǒng)統(tǒng)一生成任務(wù),定時發(fā)起任務(wù)指定某一應(yīng)用程序去執(zhí)行任務(wù),可以解決現(xiàn)有技術(shù)的數(shù)據(jù)處理沖突。
[0051]除此之外,任務(wù)調(diào)度處理系統(tǒng)生成任務(wù)時還設(shè)置了錯誤處理機制,當一個目標應(yīng)用程序執(zhí)行任務(wù)失敗時,任務(wù)調(diào)度處理系統(tǒng)根據(jù)錯誤處理機制指定另一目標應(yīng)用程序再次執(zhí)行該任務(wù),確保任務(wù)的正常執(zhí)行。
[0052]基于同一發(fā)明構(gòu)思,本發(fā)明實施例還提供了一種任務(wù)調(diào)度處理系統(tǒng)。圖3示出了該任務(wù)分配調(diào)度處理系統(tǒng)的結(jié)構(gòu)示意圖,具體包括:
[0053]消息發(fā)布器,用于向消息中間件(可以是ActiveMQ)發(fā)布主題名稱以及消息。消息發(fā)布器定義了 connectionFactory 和 topicName 兩個參數(shù),connectionFactory 是 JMS的連接工廠,配置了消息中間件所在的服務(wù)器地址端口等信息,topicName是消息的主題名稱,向消息中間件申明要接收哪些主題名稱的消息。
[0054]其中,ActiveMQ是Apache出品的開源消息總線,它是一個完全支持JMS和J2EE規(guī)范的JMS Provider實現(xiàn)。
[0055]消息接收器,用于從消息中間件接收消息。
[0056]消息過濾器,用于過濾各個應(yīng)用程序需要接收的消息。消息過濾器從應(yīng)用程序上下文容器context中獲取消息,根據(jù)預(yù)置的過濾條件判斷是否為本應(yīng)用程序關(guān)注的消息,如果不是則終止;否則將消息傳遞給具體的任務(wù)調(diào)度程序。
[0057]運算器,作為具體的任務(wù)調(diào)度程序,用于接收過濾器傳送過來的消息,根據(jù)數(shù)據(jù)庫匹配具體的任務(wù),制定作業(yè)調(diào)度執(zhí)行計劃(包括執(zhí)行時間、執(zhí)行目標和執(zhí)行內(nèi)容等),指定目標應(yīng)用程序執(zhí)行該任務(wù),發(fā)布以該任務(wù)的主題名稱為主題的任務(wù)執(zhí)行消息到消息中間件上。
[0058]目標應(yīng)用程序的消息接收器接收到該任務(wù)執(zhí)行消息以后,首先由消息過濾器對該任務(wù)執(zhí)行消息進行判斷,如果滿足該目標應(yīng)用程序自身的過濾條件,則執(zhí)行該任務(wù),執(zhí)行完成后向數(shù)據(jù)庫中記錄執(zhí)行結(jié)果;如果不滿足自身過濾條件則直接丟棄該任務(wù)執(zhí)行消息。目標應(yīng)用程序可以調(diào)用任務(wù)調(diào)度處理系統(tǒng)的運算器來執(zhí)行該任務(wù),也可以利用自身的業(yè)務(wù)執(zhí)行器執(zhí)行該業(yè)務(wù),本發(fā)明對此不作限制。[0059]本發(fā)明實施例所提供的任務(wù)調(diào)度處理系統(tǒng)還包括:規(guī)則解析器,用于對預(yù)置數(shù)據(jù)庫中的任務(wù)規(guī)則進行解析,為消息過濾器提供過濾條件,而且還定義了各個任務(wù)的指標參數(shù)信息,比如執(zhí)行周期、實行時間、作業(yè)目標等等。規(guī)則解析器是通過數(shù)據(jù)庫將需要執(zhí)行的任務(wù)規(guī)則加載到緩存中,并根據(jù)實際的消息操作來刷新緩存內(nèi)容。其中,本發(fā)明實施例的數(shù)據(jù)庫中存儲任務(wù)規(guī)則以及日常消息調(diào)度運行狀態(tài)。
[0060]基于同一發(fā)明構(gòu)思,本發(fā)明還提供了一種任務(wù)調(diào)度處理系統(tǒng),如圖4所示,包括:
[0061]規(guī)則解析器,用于對數(shù)據(jù)庫中的定時任務(wù)的任務(wù)規(guī)則進行解析,得到該定時任務(wù),該定時任務(wù)包括有主題名稱、執(zhí)行時間以及執(zhí)行對象(或稱執(zhí)行目標)等信息。
[0062]運算器,用于當?shù)竭_該任務(wù)的執(zhí)行時間時,從執(zhí)行對象中指定應(yīng)用程序作為目標應(yīng)用程序。
[0063]消息發(fā)布器,用于向消息中間件發(fā)布任務(wù)執(zhí)行消息,任務(wù)執(zhí)行消息包括該任務(wù)的主題名稱以及目標應(yīng)用程序。
[0064]消息中間件對該任務(wù)執(zhí)行消息進行廣播,目標應(yīng)用程序的消息接收器用于接收該任務(wù)執(zhí)行消息,當任務(wù)執(zhí)行消息通過目標應(yīng)用程序的消息過濾器后目標應(yīng)用程序執(zhí)行該任務(wù),并在執(zhí)行完成后向數(shù)據(jù)庫記錄執(zhí)行結(jié)果。
[0065]本發(fā)明所提供的任務(wù)調(diào)度處理方法及系統(tǒng),利用JMS機制的發(fā)布者/訂閱者模式,避免了在集群系統(tǒng)并發(fā)操作時產(chǎn)生的數(shù)據(jù)重復(fù)問題。
[0066]為了更好的說明本發(fā)明實施例的工作原理,下面以收單業(yè)務(wù)中的商戶號分配為例進行說明:
[0067]傳統(tǒng)單應(yīng)用程序模式下商戶號生成流程如圖5所示,可以看出,單應(yīng)用程序情況下商戶號依據(jù)預(yù)設(shè)規(guī)則順序增長。`然而,如果存在一個應(yīng)用程序正在處理申請商戶號并記錄結(jié)果到數(shù)據(jù)庫,而另一個應(yīng)用程序也在處理申請商戶號并記錄結(jié)果到數(shù)據(jù)庫時,就可能出現(xiàn)不同應(yīng)用程序獲得的商戶號重復(fù)的問題。
[0068]而采用本發(fā)明實施例所提供的技術(shù)方案,將申請商戶號和計算商戶號兩個原本上下連接的步驟進行了拆分,圖6示出了本發(fā)明實施例通過任務(wù)調(diào)度實現(xiàn)商戶號生成處理的流程(在此僅以應(yīng)用程序向任務(wù)調(diào)度處理系統(tǒng)申請任務(wù)的過程進行舉例說明)。
[0069]首先,在系統(tǒng)初始化階段,任務(wù)調(diào)度處理系統(tǒng)對數(shù)據(jù)庫中的“商戶號生成”任務(wù)的規(guī)則進行解析,解析內(nèi)容如下:
[0070]主題名稱:商戶號生成
[0071]消息方式:發(fā)布者/訂閱者
[0072]執(zhí)行對象:APP1、APP2 …APPn
[0073]執(zhí)行時間:立即執(zhí)行
[0074]異常重復(fù)次數(shù):3次
[0075]…
[0076]解析完成后發(fā)布一個消息,向JMS消息中間件注冊該任務(wù);其他應(yīng)用程序訂閱該任務(wù),并將自身的唯一標識名稱(假設(shè)該應(yīng)用程序為APP1)告知JMS中間件。
[0077]由此,在初始化階段完成任務(wù)調(diào)度處理系統(tǒng)與各個應(yīng)用程序的任務(wù)連接關(guān)系。
[0078]當應(yīng)用程序向JMS消息中間件發(fā)送以“商戶號生成”為主題名稱、“申請商戶號生成任務(wù)”為內(nèi)容的申請任務(wù)消息時,JMS消息中間件廣播該消息。任務(wù)調(diào)度處理系統(tǒng)接收該申請任務(wù)消息并判斷是否滿足過濾條件,不是自己關(guān)注的消息則丟棄;如果是自己關(guān)注的消息則進行后續(xù)任務(wù)調(diào)度處理。
[0079]查詢數(shù)據(jù)庫中“商戶號生成”任務(wù)的執(zhí)行狀態(tài),如果有APP正在處理商戶號生成任務(wù),則等待上一個任務(wù)執(zhí)行結(jié)束;如果沒有APP正在處理該任務(wù),則發(fā)起一個以“商戶號生成”為主題名稱、以APP2為目標應(yīng)用程序的消息到JMS消息中間件,也即指定APP2執(zhí)行這個任務(wù)。當然,目標應(yīng)用程序可以是隨機指定的,也可以預(yù)先配置,本發(fā)明對此不作限制。
[0080]JMS消息中間件對該消息進行廣播,當APP2接收到該消息后判斷是否滿足過濾條件,也即判斷是否為發(fā)送給自己的消息,如果是發(fā)送給其他應(yīng)用程序的消息則不進行任何處理操作,如果是發(fā)送給自己的消息則執(zhí)行該任務(wù),生成商戶號以后,調(diào)用數(shù)據(jù)庫接口向數(shù)據(jù)庫中記錄執(zhí)行結(jié)果。
[0081]本發(fā)明所提供的任務(wù)調(diào)度處理方法及系統(tǒng),采用JMS機制的發(fā)布者/訂閱者模式,通過將各個單號生成任務(wù)的申請與單號實際生成兩個步驟分開處理,經(jīng)任務(wù)調(diào)度以后再確定實際執(zhí)行任務(wù)的應(yīng)用程序。采用本發(fā)明的技術(shù)方案可以避免在集群系統(tǒng)并發(fā)操作時產(chǎn)生數(shù)據(jù)重復(fù)的問題。
[0082]以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其進行限制。因此,在不背離本發(fā)明的精神及其實質(zhì)的情況下,本領(lǐng)域技術(shù)人員可作出各種改變、替換和變型。很顯然,但這些改變、替換和變型都應(yīng)涵蓋于本發(fā)明權(quán)利要求的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種任務(wù)調(diào)度處理方法,其特征在于,包括以下步驟: 從消息中間件接收申請任務(wù)消息,所述申請任務(wù)消息包括主題名稱; 當判斷所述申請任務(wù)消息滿足預(yù)置的過濾條件時,在數(shù)據(jù)庫中查詢所述任務(wù)的執(zhí)行狀態(tài);如果當前沒有應(yīng)用程序正在執(zhí)行所述任務(wù),則指定目標應(yīng)用程序執(zhí)行所述任務(wù),發(fā)布以所述主題名稱為主題的任務(wù)執(zhí)行消息到所述消息中間件。
2.如權(quán)利要求1所述的任務(wù)調(diào)度處理方法,其特征在于,所述目標應(yīng)用程序從所述消息中間件接收所述任務(wù)執(zhí)行消息,當滿足預(yù)置的過濾條件時執(zhí)行所述任務(wù),并在執(zhí)行完成后向所述數(shù)據(jù)庫記錄執(zhí)行結(jié)果。
3.如權(quán)利要求1所述的任務(wù)調(diào)度處理方法,其特征在于,所述數(shù)據(jù)庫中包括任務(wù)規(guī)則,所述任務(wù)是通過對所述數(shù)據(jù)庫中的任務(wù)規(guī)則解析得到,在系統(tǒng)初始化階段發(fā)布任務(wù)消息到所述消息中間件上。
4.如權(quán)利要求1所述的任務(wù)調(diào)度處理方法,其特征在于,所述在數(shù)據(jù)庫中查詢所述任務(wù)的執(zhí)行狀態(tài),如果當前存在應(yīng)用程序正在執(zhí)行所述任務(wù),則等待所述應(yīng)用程序執(zhí)行結(jié)束。
5.如權(quán)利要求1所述的任務(wù)調(diào)度處理方法,其特征在于,所述目標應(yīng)用程序為預(yù)先設(shè)置或者隨機指定。
6.一種任務(wù)調(diào)度處理方法,其特征在于,包括以下步驟: 對數(shù)據(jù)庫中的定時任務(wù)的任務(wù)規(guī)則進行解析,得到所述定時任務(wù),所述定時任務(wù)包括主題名稱、執(zhí)行時間和執(zhí)行對象; 當?shù)竭_所述執(zhí)行時間時,從所述執(zhí)行對象中指定應(yīng)用程序作為目標應(yīng)用程序,向消息中間件發(fā)布任務(wù)執(zhí)行消息,所述任務(wù)執(zhí)行消息包括所述主題名稱和所述目標應(yīng)用程序。
7.如權(quán)利要求6所述的任務(wù)調(diào)度處理`方法,其特征在于,所述目標應(yīng)用程序從所述消息中間件接收所述任務(wù)執(zhí)行消息,當滿足預(yù)置的過濾條件時執(zhí)行所述任務(wù),并在執(zhí)行完成后向數(shù)據(jù)庫記錄執(zhí)行結(jié)果。
8.一種任務(wù)調(diào)度處理系統(tǒng),其特征在于,包括: 消息接收器,用于從消息中間件接收申請任務(wù)消息,所述申請任務(wù)消息包括主題名稱; 消息過濾器,用于根據(jù)預(yù)置的過濾條件過濾所述申請任務(wù)消息; 運算器,用于當所述申請任務(wù)消息通過所述消息過濾器時,在數(shù)據(jù)庫中查詢該任務(wù)的執(zhí)行狀態(tài),如果當前沒有應(yīng)用程序正在執(zhí)行所述任務(wù),則指定目標應(yīng)用程序執(zhí)行所述任務(wù); 消息發(fā)布器,用于發(fā)布以所述主題名稱為主題的任務(wù)執(zhí)行消息到所述消息中間件上。
9.如權(quán)利要求8所述的任務(wù)調(diào)度處理系統(tǒng),其特征在于,所述目標應(yīng)用程序的消息接收器用于接收所述任務(wù)執(zhí)行消息,當所述任務(wù)執(zhí)行消息通過所述目標應(yīng)用程序的消息過濾器后所述目標應(yīng)用程序執(zhí)行所述任務(wù),并在執(zhí)行完成后向所述數(shù)據(jù)庫記錄執(zhí)行結(jié)果。
10.如權(quán)利要求8所述的任務(wù)調(diào)度處理系統(tǒng),其特征在于,還包括:規(guī)則解析器,用于對所述數(shù)據(jù)庫中的任務(wù)規(guī)則進行解析得到所述任務(wù);所述消息發(fā)布器還用于在系統(tǒng)初始化階段將任務(wù)消息發(fā)布到所述消息中間件上。
11.如權(quán)利要求8所述的任務(wù)調(diào)度處理系統(tǒng),其特征在于,所述運算器還用于如果當前存在應(yīng)用程序正在執(zhí)行所述任務(wù),則等待所述應(yīng)用程序執(zhí)行結(jié)束。
12.如權(quán)利要求8所述的任務(wù)調(diào)度處理系統(tǒng),其特征在于,所述運算器具體用于指定預(yù)先設(shè)置的目標應(yīng)用程序執(zhí)行所述任務(wù),或者隨機指定應(yīng)用程序作為目標應(yīng)用程序執(zhí)行所述任務(wù)。
13.一種任務(wù)調(diào)度處理系統(tǒng),其特征在于,包括: 規(guī)則解析器,用于對數(shù)據(jù)庫中的定時任務(wù)的任務(wù)規(guī)則進行解析,得到所述定時任務(wù),所述定時任務(wù)包括主題名稱、執(zhí)行時間和執(zhí)行對象; 運算器,用于當?shù)竭_所述執(zhí)行時間時,從所述執(zhí)行對象中指定應(yīng)用程序作為目標應(yīng)用程序; 消息發(fā)布器,用于向消息中間件發(fā)布任務(wù)執(zhí)行消息,所述任務(wù)執(zhí)行消息包括所述主題名稱以及所述目標應(yīng)用程序。
14.如權(quán)利要求13所述的任務(wù)調(diào)度處理系統(tǒng),其特征在于,所述目標應(yīng)用程序的消息接收器用于接收所述任務(wù)執(zhí)行消息,當所述任務(wù)執(zhí)行消息通過所述目標應(yīng)用程序的消息過濾器后所述目標應(yīng)用程序執(zhí)行所述任務(wù),并在執(zhí)行完成后向數(shù)據(jù)庫記錄執(zhí)行結(jié)果。
【文檔編號】G06F9/48GK103679392SQ201310738706
【公開日】2014年3月26日 申請日期:2013年12月26日 優(yōu)先權(quán)日:2013年12月26日
【發(fā)明者】周雪松, 項毅 申請人:拉卡拉支付有限公司