java - 关于quartz-scheduler中的失火

标签 java quartz-scheduler

我正在使用 quart 库在 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) 来设置调度程序。

最佳答案

the values in quartz_trigger i.e. the next_fire_time in table is changed after the execution >time of the job

是的,这实际上是 quartz 在失火时所做的事情。

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

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

关于java - 关于quartz-scheduler中的失火,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16983218/

相关文章:

java - 我们如何使用一元运算符计算后缀字符串?

Java Servlet 表单发布问题 : getParameters() return null values

java - Quartz 中每 50 秒执行一次 Cron 表达式

java - 升级到 Quartz 2.2 JDBC Jobstore 新列 Sched_time

java - 使用 java.util.timer 与 Quartz 进行调度的优缺点?

java - 读取文本文件并获取每行的长度,同时将它们添加到长度正确的字符串中时出现问题

java - 根据对象数据生成唯一标识

java - 我如何设置满足上述要求的条件

java - Spring - Quartz 不执行作业类

java - 如何在单个主机上运行quartz作业