我有一个 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
和 小时 0
期间每 5 秒触发一次日常的。也就是说,每天的第一分钟,作业会执行12次。
我假设您希望它在任何小时触发,即每 5 秒触发一次,无论哪个小时。
将表示分钟和小时的两个零替换为*
通配符。另外,您不需要 ?
,这意味着没有特定值。下面的表达式将每 5 秒安排一次计时器,无论是哪个小时或分钟:
0/5 * * * * *
0 0 0/1 * * ?
之所以“有效”,是因为您正确理解了该表达式,而对于“无效”的表达式,您没有正确理解。基本上,这意味着每 1 小时开始一个新的小时(第 0 分和第 0 秒)。
本文档是一个很好的资源,其中包含 Quartz 1.X 的示例:
http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger
关于java - Seam Quartz Dispatcher 未在给定 cron 表达式的秒和分钟字段上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30190122/