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

elastic-job的任務都是使用quartz來觸發的,quartz表達式通常都是按期執行。但有時候一些週期較長的任務,好比一天一次,幾小時一次的任務,咱們須要等待好久才能觸發一次。若是咱們須要測試一些功能,或者說重跑一些任務的話,手動觸發任務功能就變得尤其重要,也是任務框架通常都必需要實現的特性。如今咱們就來聊一聊elastic-job的手動觸發任務的功能。架構

觸發功能的使用

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

image

任務定時週期是5s,當點擊觸發的時候,任務當即出發,以下圖。測試

image

 

原理分析

elastic-job依靠zookeeper傳遞消息和quartz自己的觸發功能來實現遠程觸發的功能。3d

當點擊「觸發」按鈕時,管理頁面會從zookeeper中找到當前Job下全部的任務實例,在實例節點上寫入數據「TRIGGER」。以下圖:blog

image

 

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

 

 

 

架構點滴

相關文章
相關標籤/搜索