我正在使用夸脱库在Java中进行调度。我写了这样的触发器

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


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

最佳答案

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


是的,这实际上是石英在发生失火的情况下所做的。

根据创建触发器时提供的不点火指令,石英计算必须执行多少次不点火执行。
根据您的代码,您将不点火指令设置为“ fireAndProceed”,因此Quartz仅执行第一个不点火执行(并忽略所有后续的不点火)。例如:如果您将触发器设置为在2Pm至4pm之间以30分钟的间隔触发,并且调度程序在2:29 pm至3.29pm之间关闭,则只有一个触发器执行时间为2.30pm
将被执行(而3.pm的执行将被忽略)。

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

07-24 22:08