是否可以更改Quartz调度程序决定当前时间的方式?
我正在开发一个基于服务的应用程序,包括一个时间服务,负责按需提供当前时间(以便我们可以控制当前时间进行测试)。
我们的日程安排服务使用Quartz。在测试时安排尊重“正确”的当前时间,而不是System.currentTimeMillis()
或类似的确定时间,这将是很好的。
(我认为this question的答案可能暗示我不能这样做,但我希望我错了......)
我正在使用Quartz 2.0.0版。
答案 0 :(得分:4)
一种方法是定义自己的包装(或继承)StdScheduler的Scheduler。在您的覆盖scheduleJob(...)
方法中,您使用包装器实现来包装提供的Trigger
,例如,您可以覆盖getStartTime()
和/或getNextFireTime()
方法以返回包装触发返回值加上或减去某个间隔,该间隔表示“测试”时间相对于“实际”时间的偏移量。
答案 1 :(得分:1)
你的问题的答案是否定的,你不能这样做。
早些时候Quartz试图解释这样的需求,但是必须有这么多不同生命周期(实例化器等)的组件需要确定当前时间,它所需的管道变得非常笨重而且它放弃了。