场景:
项目中利用quartz框架做定时任务,现场同事测试的时候发现每天定时间点执行的定时任务没启动;
处理过程:
定时任务等待中,按照项目业务逻辑,先查看定时任务是否被禁用,再查看定时任务设置的开始时间和结束时间有没有包含任务启动时间,再看定时任务队列有没有阻塞;检查一遍,所有设置表面看起来一切正常;
继续分析日志,quartz是创建了调度策略的;然鹅,却没有在cron设置的时间和系统时间一致时,将任务放进队列顺序启动;然鹅,按时间间隔运行的定时任务却可以正常入队启动;
气氛逐渐变的焦灼...
这个时候,现场同事提到了他修改过系统时间.改了时区; 大胆猜想,如果quartz加载了系统时间并且运行过程中不再矫正的话,的确不会匹配修改后的系统时间启动调度;
默念程序猿三宝:刷新 重启 重装;
重启之后,quartz重新加载改正后的系统时间;可以在正确的时间做正确的事情了.
解决办法;
别问,问就是重启;
就是这么莽,再找时间看quartz源码求证吧....