java - Seam Quartz Dispatcher 未在给定 cron 表达式的秒和分钟字段上触发

标签 java jboss quartz-scheduler seam cronexpression

我有一个 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/

相关文章:

java - 在程序中运行 wsdl2java 怎么样?

java - Infinispan,版本化操作返回不正确的结果

java - JBoss Eclipselink 不在 postgresql 中的 create-tables/create-or-extend-tables 上创建索引

java - 使用 spring mvc 安排任务

java - 在 Java 中使用 quartz 进行作业链接

尝试关闭 ProcessBuilder OutputStream 时 Java 挂起

java - 如何显示依赖于支持状态的 GWT UI 元素?

java - EJB - 事务超时

java - Spring Cloud 配置到 java util 属性

java - 在构建图表时应该如何检查唯一值?