定时触发的实现,主要是依靠:
xjob提供的 xxl_job_info sql文件
xxl_job_info 中 cron字段是规定定时时间,0 8 3 * * ? ,分别对应秒,分钟,小时,天,月
就是每天三点零8分执行这个任务
trigger_last_time字段是最后执行时间 (毫秒值)
trigger_next_time字段是下一次执行时间 (毫秒值)
详细的JobScheduleHelperCron定时触发 这个阶段流程图如下:
在xxl-job的框架中,在调度任务的时候,首先会将任务下次需要执行的时间nextTriggerTime放入到jobinfo表中,然后后台有一个线程在每隔个5s左右捞取从此刻到将来5秒内需要执行的指定数量的任务,即nextTriggerTime < nowTime + 5s的预读时间,在此时会判断,五秒外跳过,五秒内收录,等于五秒执行,五秒内的,需要另一个线程来每秒捞一次时间轮 ,获取达到触发时间的任务,执行并且更新下一次触发时间
任务触发和执行的 完整的任务触发执行总体流程图 如下: