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方法,触发任务。部署