石英Cron Misfire

时间:2018-05-03 04:43:30

标签: cron quartz-scheduler scheduler misfire-instruction

我是新的Quartz调度程序,但遇到了一些麻烦。

当我使用简单的Scheduler时如下:

Trigger misFiredTriggerB = TriggerBuilder.newTrigger().startAt(DateUtils.addSeconds(new Date(), -63)).withSchedule(SimpleScheduleBuilder.simpleSchedule().withMisfireHandlingInstructionFireNow()).build();

它工作正常,根据情况考虑失火阈值和失火指令。

但是当我使用cron调度程序并使用当前时间前几秒的时间时,它既不考虑阈值也不考虑失火指令。

Trigger misFiredTriggerA =  TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").withSchedule(CronScheduleBuilder.cronSchedule("30,35,38 50 17 * * ?").withMisfireHandlingInstructionFireAndProceed()).build();

我对cron有什么问题吗?

另一个问题是如何在eclipse中轻松更改失火阈值,默认设置为60000?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

简单触发器和Cron触发器之间存在区别。

  • 简单触发器的执行安排在确切的日期,该日期可以在现在之前或之后。在您的情况下,此时间已超过60秒(属性 org.quartz.jobStore.misfireThreshold (以毫秒为单位)),因此Quartz假定此类触发为误触发。
  • Quartz使用 Cron触发器安排在将来遵守cron表达式的最近日期执行。因此,根据您的情况,工作将于明天17:50:30触发