quartz启动时候会在JobStoreSupport(包路径org.quartz.impl.jdbcjobstore)启动一个线程用来恢复超期的任务,源代码如下
在启动前会做一次恢复操作,如果恢复出异常那么MisfireHandler就不会启动也不会做后续的恢复工作,直接后果就是任务一旦出现延迟等情况,没有办法自动恢复
public void schedulerStarted() throws SchedulerException { if (isClustered()) { clusterManagementThread = new ClusterManager(this); clusterManagementThread.initialize(); } else { try { recoverJobs(); } catch (SchedulerException se) { throw new SchedulerConfigException( "Failure occured during job recovery.", se); } } misfireHandler = new MisfireHandler(this); misfireHandler.initialize(); }