我正在使用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运行,那么我将系统时钟时间更改为2/5/2013 12:43 PM,然后等待几分钟以查看是否Quartz从数据库中获取工作。这对我来说很好。
每次我需要测试时,我都不想更改系统时钟时间。有更好的方法吗?
我注意到经常更改系统时间有时会使用Quartz,而某些工作没有被提取。
答案 0 :(得分:0)
您可以使用Quartz TriggerUtils方法来确定未来的执行是否是预期的。
更具体地说,computeFireTimes(org.quartz.spi.OperableTrigger trigg, Calendar cal, int numTimes)
方法返回一个日期列表,这些日期是触发器的下一个触发时间。
我希望这会有所帮助。