elastic-job的任務都是使用quartz來觸發的,quartz表達式通常都是按期執行。但有時候一些週期較長的任務,好比一天一次,幾小時一次的任務,咱們須要等待好久才能觸發一次。若是咱們須要測試一些功能,或者說重跑一些任務的話,手動觸發任務功能就變得尤其重要,也是任務框架通常都必需要實現的特性。如今咱們就來聊一聊elastic-job的手動觸發任務的功能。架構
elastic-job有個管理界面console,這裏不在贅述怎麼樣部署和打開管理界面。在這個管理界面上,有個觸發按鈕,點擊這個按鈕就能觸發這個任務。框架
任務定時週期是5s,當點擊觸發的時候,任務當即出發,以下圖。測試
elastic-job依靠zookeeper傳遞消息和quartz自己的觸發功能來實現遠程觸發的功能。3d
當點擊「觸發」按鈕時,管理頁面會從zookeeper中找到當前Job下全部的任務實例,在實例節點上寫入數據「TRIGGER」。以下圖:blog
每一個節點實例啓動的時候,elastic-job默認會將任務觸發監聽器JobTriggerStatusJobListener啓動,使用curator來監控instances節點的數據變化,當出現變化則觸發JobTriggerStatusJobListener的dataChanged方法。從而最終調用quartz的triggerJob方法,觸發任務。部署