Spring Quartz Scheduler需要两天的时间来识别失火的作业

Spring Quartz Scheduler需要两天的时间来识别失火的作业,spring,quartz-scheduler,scheduler,Spring,Quartz Scheduler,Scheduler,如何让Quartz调度器更早地识别错过的作业 该职位本应于2014年12月5日08:00:00.000被解雇,但仅于2014年12月7日23:34:15800被确认 一旦该作业被识别为失火作业,它将被正确重新调度,但正如您所看到的,存在异常ObjectAlreadyExistsException,但这会导致触发器指令重新执行作业,然后该作业将正确运行 问题是两天两次确定这个错过的工作太长了 也许我需要用失火指令制造触发器 .withMisfireHandlingInstructionIgnore

如何让Quartz调度器更早地识别错过的作业

该职位本应于2014年12月5日08:00:00.000被解雇,但仅于2014年12月7日23:34:15800被确认

一旦该作业被识别为失火作业,它将被正确重新调度,但正如您所看到的,存在异常ObjectAlreadyExistsException,但这会导致触发器指令重新执行作业,然后该作业将正确运行

问题是两天两次确定这个错过的工作太长了

也许我需要用失火指令制造触发器

.withMisfireHandlingInstructionIgnoreMisfires()
但我的理解是,这意味着一旦发现,它将始终运行作业,而不会咨询smart政策

quartz.properties文件

如何让Quartz调度器更早地识别错过的作业


根据,这由org.quartz.jobStore.misfiresthrown属性控制。尝试将其设置为一个较低的值,看看是否有帮助……

可能,org.quartz.jobStore.misfiresthrown是被视为“misfired”之前的时间,但这并不能解释为什么在属性文件中将其设置为org.quartz.jobStore.misfiresthrown=600000需要两天。我们认为问题可能是我们在一个数据库上运行两个集群应用服务器。我们已经设置了集群,我们将拭目以待,看看是否还会发生这种情况。
final Trigger trigger = TriggerBuilder
            .newTrigger()
            .withIdentity(Objects.toString(jeopardyEventId),
                    "expiry" + jobGroup + "Trigger")
            .startAt(expirationTime).build();
.withMisfireHandlingInstructionIgnoreMisfires()
org.quartz.plugin.triggerHistory.class=org.quartz.plugins.history.LoggingTriggerHistoryPlugin
org.quartz.plugin.triggerHistory.triggerFiredMessage=Trigger [{1}.{0}] fired job [{6}.{5}] scheduled at: {2, date, dd-MM-yyyy HH:mm:ss.SSS}, next scheduled at: {3, date, dd-MM-yyyy HH:mm:ss.SSS}
org.quartz.plugin.triggerHistory.triggerCompleteMessage=Trigger [{1}.{0}] completed firing job [{6}.{5}] with resulting trigger instruction code: {9}. Next scheduled at: {3, date, dd-MM-yyyy HH:mm:ss.SSS}
org.quartz.plugin.triggerHistory.triggerMisfiredMessage=Trigger [{1}.{0}] misfired job [{6}.{5}]. Should have fired at: {3, date, dd-MM-yyyy HH:mm:ss.SSS}
org.quartz.plugin.jobHistory.class=org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobHistory.jobToBeFiredMessage=Job [{1}.{0}] to be fired by trigger [{4}.{3}], re-fire: {7}
org.quartz.plugin.jobHistory.jobSuccessMessage=Job [{1}.{0}] execution complete and reports: {8}
org.quartz.plugin.jobHistory.jobFailedMessage=Job [{1}.{0}] execution failed with exception: {8}
org.quartz.plugin.jobHistory.jobWasVetoedMessage=Job [{1}.{0}] was vetoed. It was to be fired by trigger [{4}.{3}] at: {2, date, dd-MM-yyyy HH:mm:ss.SSS}
org.quartz.jobStore.misfireThreshold=600000
org.quartz.threadPool.threadCount=50
org.quartz.scheduler.skipUpdateCheck=true