本發(fā)明涉及計(jì)算機(jī)軟件技術(shù),尤其涉及一種基于ONS的定時(shí)任務(wù)調(diào)度方法。
背景技術(shù):
傳統(tǒng)的定時(shí)任務(wù)基于服務(wù)器端進(jìn)行啟動,遠(yuǎn)程調(diào)用各業(yè)務(wù)子系統(tǒng)的服務(wù),屬于同步調(diào)用機(jī)制,該機(jī)制有如下缺點(diǎn):
1、同步方式容易造成等待死鎖,其它代碼無法執(zhí)行的現(xiàn)象;
2、同步方式容易超時(shí),如果定時(shí)任務(wù)調(diào)用時(shí)間間隔過短,容易造成業(yè)務(wù)系統(tǒng)
3、代碼尚未執(zhí)行完成,又進(jìn)行了二次啟動的問題;
4、傳統(tǒng)方式的定時(shí)任務(wù)無法正常跟蹤各業(yè)務(wù)系統(tǒng)JOB狀態(tài);
5、傳統(tǒng)方式的定時(shí)任務(wù)無法很好針對單節(jié)點(diǎn)及集群進(jìn)行靈活配置。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出了一種基于ONS的定時(shí)任務(wù)調(diào)度方法。此定時(shí)任務(wù)方法的場景適用于控制各獨(dú)立客戶端業(yè)務(wù)系統(tǒng)任務(wù)的遠(yuǎn)程啟動,各業(yè)務(wù)系統(tǒng)自行編寫對應(yīng)的任務(wù)調(diào)度代碼,并且可以針對定時(shí)任務(wù)的性質(zhì)進(jìn)行單節(jié)點(diǎn)或集群的動態(tài)配置,適應(yīng)集群節(jié)點(diǎn)的自動擴(kuò)展。
本發(fā)明要解決的技術(shù)問題是:
1、解決同步方式容易造成等待死鎖,其它代碼無法執(zhí)行的現(xiàn)象;
2、解決同步方式容易超時(shí),如果定時(shí)任務(wù)調(diào)用時(shí)間間隔過短,容易造成業(yè)務(wù)系統(tǒng)代碼尚未執(zhí)行完成,又進(jìn)行了二次啟動的問題;
3、解決傳統(tǒng)方式的定時(shí)任務(wù)無法正常跟蹤各業(yè)務(wù)系統(tǒng)JOB狀態(tài)的問題。
本發(fā)明提供的技術(shù)方案:
1、服務(wù)端統(tǒng)一為各業(yè)務(wù)系統(tǒng)提供定時(shí)任務(wù)jar包,各業(yè)務(wù)系統(tǒng)自行編寫JOB代碼;
2、定時(shí)任務(wù)jar包提供了RunJobMessageListener和ShowMethodMessageListener監(jiān)聽,其中RunJobMessageListener可以獲取實(shí)現(xiàn)了IJob接口的bean并發(fā)送給服務(wù)端,ShowMethodMessageListener類可以監(jiān)聽來自服務(wù)端的啟動指令,啟動實(shí)現(xiàn)了IJob接口的類的execute方法;
3、服務(wù)器端提供了統(tǒng)一門戶進(jìn)行定時(shí)任務(wù)統(tǒng)一配置,可以選擇到業(yè)務(wù)子系統(tǒng)jar包反饋的實(shí)現(xiàn)了IJob接口類的bean信息;可以配置定時(shí)任務(wù)調(diào)用的時(shí)間間隔及需要傳遞的參數(shù);
4、服務(wù)端統(tǒng)一向客戶端發(fā)送定時(shí)任務(wù)啟動指令,jar包監(jiān)聽到該指令后,自動執(zhí)行IJob實(shí)現(xiàn)類的execute方法,并將任務(wù)執(zhí)行結(jié)果異步傳遞給服務(wù)端。
本發(fā)明定時(shí)任務(wù)基于阿里ONS異步消息機(jī)制,無需考慮服務(wù)端同步等待的問題,節(jié)省了服務(wù)端資源消耗,并且各業(yè)務(wù)系統(tǒng)獨(dú)自編寫各自的JOB實(shí)現(xiàn)代碼,靈活可配置。
本發(fā)明技術(shù)方案帶來的有益效果
1、解決了同步等待,資源過度消耗的問題;
2、各業(yè)務(wù)子系統(tǒng)獨(dú)自編寫自己的業(yè)務(wù)代碼,耦合度大大降低;
3、統(tǒng)一門戶平臺進(jìn)行定時(shí)任務(wù)配置,方便整體把控;
附圖說明
圖1是本發(fā)明的整體模型示意圖。
具體實(shí)施方式
下面對本發(fā)明的內(nèi)容進(jìn)行更加詳細(xì)的闡述:
本發(fā)明適用于各獨(dú)立應(yīng)用之間的定時(shí)任務(wù)調(diào)用,JOB服務(wù)器控制多個(gè)業(yè)務(wù)子系統(tǒng)的JOB調(diào)用;
本發(fā)明基于阿里ONS消息機(jī)制,異步發(fā)起JOB啟動指令、異步接收各業(yè)務(wù)子系統(tǒng)反饋的JOB狀態(tài);
JOB服務(wù)端統(tǒng)一為各業(yè)務(wù)子系統(tǒng)提供定時(shí)任務(wù)jar包,提供IJob接口,各業(yè)務(wù)系統(tǒng)需要實(shí)現(xiàn)IJob接口;jar包會自動監(jiān)聽實(shí)現(xiàn)IJob接口的類,并及時(shí)反饋給服務(wù)端;
各業(yè)務(wù)系統(tǒng)需要登錄服務(wù)端提供的統(tǒng)一門戶進(jìn)行定時(shí)任務(wù)調(diào)度機(jī)制的配置,頁面中可以選擇實(shí)現(xiàn)IJob接口的bean信息,并且可以進(jìn)行參數(shù)配置;
服務(wù)端基于quartz包進(jìn)行任務(wù)的統(tǒng)一調(diào)度,向各業(yè)務(wù)系統(tǒng)發(fā)送JOB啟動指令,定時(shí)任務(wù)jar包會接收啟動指令,并自動調(diào)用實(shí)現(xiàn)IJob接口的任務(wù)類。舉例步驟:
業(yè)務(wù)子系統(tǒng)引入JOB.jar;
業(yè)務(wù)子系統(tǒng)編寫B(tài)ean,實(shí)現(xiàn)IJob的execute,如下:
登錄服務(wù)端提供的統(tǒng)一門戶,進(jìn)入任務(wù)調(diào)度頁面,進(jìn)行定時(shí)任務(wù)的統(tǒng)一配置。