关于石英计划中的失火

时间:2013-06-07 11:39:07

标签: java quartz-scheduler

我使用夸脱库在java中进行调度。我写过像这样的触发器

trigger = newTrigger().withIdentity("myTrigger", "myGroup").startNow() .withSchedule(cronSchedule(croneExpression).withMisfireHandlingInstructionFireAndProceed()) .forJob("myJob","myGroup") .build();

现在,当我使用cronexpression设置调度程序时,动态生成的调度程序正常运行。但是当在调度程序设置为触发期间服务器关闭时,quartz_trigger中的值即表中的next_fire_time在作业执行时间之后发生更改。因此,调度程序的失火不起作用。所以我的目的没有解决。那可能是什么问题?是否设置了quartz.properties中的任何属性。我没有使用job.xml(jobInitializer)来设置调度程序。

1 个答案:

答案 0 :(得分:1)

  

quartz_trigger中的值,即表中的next_fire_time在执行>作业时间后更改

是的,这是石英实际上在失火的情况下确实。

根据创建触发时提供的失火指令,quartz会计算必须执行错误执行的次数。 根据您的代码,您已将失火指令设置为“fireAndProceed”,因此Quartz只执行第一次失火执行(并忽略所有后续剩余的失火)。例如:如果您将触发器设置为在2Pm到4pm之间以30分钟的间隔触发,并且如果调度程序在下午2:29到下午3:29期间停机,那么只有一个触发器执行时间2.30pm 将被执行(并且将忽略3.pm的执行)。

希望这能回答你的问题。 : - )