elastic-job詳解(三):Job的手動觸發功能


elastic-job的任務都是使用quartz來觸發的,quartz表達式一般都是定期執行。但有時候一些周期較長的任務,比如一天一次,幾小時一次的任務,我們需要等待很久才能觸發一次。如果我們需要測試一些功能,或者說重跑一些任務的話,手動觸發任務功能就變得尤為重要,也是任務框架一般都必須要實現的特性。現在我們就來聊一聊elastic-job的手動觸發任務的功能。

觸發功能的使用

elastic-job有個管理界面console,這里不在贅述怎么樣部署和打開管理界面。在這個管理界面上,有個觸發按鈕,點擊這個按鈕就能觸發這個任務。

image

任務定時周期是5s,當點擊觸發的時候,任務立即出發,如下圖。

image

 

原理分析

elastic-job依靠zookeeper傳遞消息和quartz本身的觸發功能來實現遠程觸發的功能。

當點擊“觸發”按鈕時,管理頁面會從zookeeper中找到當前Job下所有的任務實例,在實例節點上寫入數據“TRIGGER”。如下圖:

image

 

每個節點實例啟動的時候,elastic-job默認會將任務觸發監聽器JobTriggerStatusJobListener啟動,使用curator來監控instances節點的數據變化,當出現變化則觸發JobTriggerStatusJobListener的dataChanged方法。從而最終調用quartz的triggerJob方法,觸發任務。

 

 

 

架構點滴


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM