我使用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 PM运行,则将系统时钟时间更改为2013年2月5日12:43 PM,然后等待几分钟以查看Quartz是否从数据库中提取该作业。这对我来说很好。
我不想在每次需要测试时都更改系统时钟时间。有没有更好的方法来做这件事?
我注意到频繁更改系统时间有时会导致Quartz出现一些作业无法处理的情况。
发布于 2013-01-26 03:26:48
您可以使用Quartz TriggerUtils方法来确定将来的执行是否符合预期。
更具体地说,computeFireTimes(org.quartz.spi.OperableTrigger trigg, Calendar cal, int numTimes)方法返回触发器的下一次触发时间的日期列表。
我希望这能帮到你。
https://stackoverflow.com/questions/14468327
复制相似问题