在 Quartz 1.8.6 中,是否有像 MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT CronTrigger 这样的选项

In Quartz 1.8.6, is there an option like MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT CronTrigger

我们在我们的应用程序中使用 Quartz 1.8.6。我们将 CronTriggers 用于每小时和每晚的作业。我们希望进行设置,以便在出现故障时跳过该作业,直到下一个 cron 时间到来。

对于简单的工作,您似乎可以做

nightlyTrigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT);

但是,这似乎不适用于 CronTrigger。在这种情况下使用的 Misfire 指令是什么?

您想使用 CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING.

SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT 告诉 Quartz,一旦发生一次或多次失火,它必须:

  • 重新安排触发器在下一个预定日期触发(不触发,即忽略、错过的执行)。
  • 此外,设置 "repetitions left" 计数器,就好像所有错过的执行都正确 运行(也不考虑错过的 运行)。

所以基本上这个失败指令告诉 Quartz 什么都不做,微笑着继续前进,就像什么都没发生过一样。失火指示的 KEEP CALM。

Cron 触发器的等效指令更恰当地命名为:CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING