石英如果方法需要更长时间,则完成时重复间隔开始

时间:2017-06-11 14:14:34

标签: java quartz-scheduler

我的工作每2分钟运行一次:

org.quartz.CronScheduleBuilder.cronSchedule("0 0/2 * * * ?").withMisfireHandlingInstructionDoNothing()

目前,如果工作时间超过2分钟,Quartz会再等2分钟再次运行。

如果花费的时间超过预定的时间间隔,我该如何立即启动?

我不希望Quartz创建另一个作业并同时运行,因为如果作业总是失败,我不想填写作业队列,我希望作业以至少2分钟的间隔运行

1 个答案:

答案 0 :(得分:1)

Misfire说明告诉Quartz当工作迟到时该怎么做。

如果由于调度程序已关闭,或者由于之前的运行时间超过预期或任何其他原因导致作业无法按时启动,则表示失败。您可以使用 withMisfireHandlingInstructionDoNothing() 之类的失火指令来告诉Quartz该做什么 在这种情况下,你告诉Quartz:" 如果这份工作的时间比预期的要长,那就是我的问题,而不是你的问题。不要同时启动另一个实例,不要等待它完成。忽略它。什么都不做"。

如果你想改变它,你可以使用另一个失火指令,比如 withMisfireHandlingInstructionFireAndProceed() ,这将指示Quartz在上一个完成后立即触发失误的作业。< / p>

您可以在the API Javadoc中查找每种类型的时间表的可用失火说明。