对于给定的 cron 表达式,Seam Quartz Dispatcher 不会在秒和分钟字段上触发

Seam Quartz Dispatcher not firing on seconds and minutes field for a given cron expression

我有一个 Quartz 作业会重复触发一段时间。不幸的是,由于某些未知原因,它没有触发。

这是我的 cron 表达式:

0/5 0 0 * * ?

所以基本上作业应该每 5 秒触发一次。这是不起作用的部分。

现在奇怪的是我将 cron 表达式更改为

0 0 0/1 * * ?

每 1 小时触发一次作业。作业已解雇,我可以看到正在 Java 端调用该方法。

我也在分钟字段上尝试过,例如。 0 0/5 0 * * ? 每 5 分钟一次,但它也不触发。

我不知道其他两个表情没有触发是什么行为。任何帮助将不胜感激。

这也是我的seam.quartz.properties文件

Configure Main Scheduler Properties

org.quartz.scheduler.instanceName QuartzScheduler
org.quartz.scheduler.instanceId AUTO
org.quartz.scheduler.rmi.export false
org.quartz.scheduler.rmi.proxy false

Configure ThreadPool

org.quartz.threadPool.class org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount 10

Configure JobStore

org.quartz.jobStore.misfireThreshold 60000
org.quartz.jobStore.class org.quartz.simpl.RAMJobStore

我正在使用 Jboss 5.1.0、Seam 2.2 和 Quartz 1.8.3。

0/5 0 0 * * ?

上面的 cron 表达式将安排作业在 分钟 0 小时 [=12] 期间每 5 秒触发一次=] 每天。也就是说,每天第一分钟,job会执行12次。

我假设您希望它在任何时间触发,即每 5 秒触发一次,与时间无关。

将表示 分钟小时 的两个零替换为 * 通配符。此外,您不需要 ?,这意味着 没有特定值 。下面的表达式将每 5 秒安排一次计时器,不管它是小时还是分钟

0/5 * * * * *

之所以 0 0 0/1 * * ? 是 "working" 是因为你正确理解了表达式,而你没有理解 "not working" 的表达式。基本上这意味着在新的一小时开始时每隔 1 小时(第 0 分钟和第 0 秒).

此文档是一个很好的资源,其中包含 Quartz 示例 1.X:

http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger