石英 - 改变当前时间的确定方式?

时间:2011-08-25 14:36:14

标签: java quartz-scheduler

是否可以更改Quartz调度程序决定当前时间的方式?

我正在开发一个基于服务的应用程序,包括一个时间服务,负责按需提供当前时间(以便我们可以控制当前时间进行测试)。

我们的日程安排服务使用Quartz。在测试时安排尊重“正确”的当前时间,而不是System.currentTimeMillis()或类似的确定时间,这将是很好的。

(我认为this question的答案可能暗示我不能这样做,但我希望我错了......)

我正在使用Quartz 2.0.0版。

2 个答案:

答案 0 :(得分:4)

一种方法是定义自己的包装(或继承)StdScheduler的Scheduler。在您的覆盖scheduleJob(...)方法中,您使用包装器实现来包装提供的Trigger,例如,您可以覆盖getStartTime()和/或getNextFireTime()方法以返回包装触发返回值加上或减去某个间隔,该间隔表示“测试”时间相对于“实际”时间的偏移量。

答案 1 :(得分:1)

你的问题的答案是否定的,你不能这样做。

早些时候Quartz试图解释这样的需求,但是必须有这么多不同生命周期(实例化器等)的组件需要确定当前时间,它所需的管道变得非常笨重而且它放弃了。