0

我正在使用 Quartz JDBC Job store (org.quartz.impl.jdbcjobstore.JobStoreTX) 和 MySQL 来调度作业。

我有以下设置:

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource=foo
org.quartz.dataSource.foo.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.foo.URL=jdbc:mysql://localhost:3306/myDB
org.quartz.dataSource.foo.user=user
org.quartz.dataSource.foo.password=*****
org.quartz.dataSource.foo.maxConnections=5
org.quartz.dataSource.foo.validateOnCheckout=true
org.quartz.dataSource.foo.validationQuery=SELECT 1

我可以安排工作,Quartz 在时间到期时从数据库中提取工作。

有些工作最多可以安排在未来 3 或 4 周内。我该如何测试这个?

现在我去手动更改系统时间。例如,如果我安排一个作业在 2013 年 2 月 5 日下午 12:45 运行,那么我将系统时钟时间更改为 2013 年 2 月 5 日下午 12:43,然后等待几分钟看看是否Quartz 接手了 DB 的工作。这对我来说很好。

我不想每次需要测试时都更改系统时钟时间。有一个更好的方法吗?

我注意到经常更改系统时间有时会使 Quartz 搞砸一些工作没有得到处理。

4

1 回答 1

0

您可以使用Quartz TriggerUtils方法来确定未来的执行是否符合预期。

更具体地说,该computeFireTimes(org.quartz.spi.OperableTrigger trigg, Calendar cal, int numTimes)方法返回一个日期列表,这些日期是触发器的下一次触发时间。

我希望这有帮助。

于 2013-01-25T19:26:47.927 回答