0

在石英调度器中我有疑问

例如

如果我们每 5 分钟或 10 分钟或 2 小时安排一次作业,我们可以使用如下所示的固定时间间隔调用调度程序,没问题,

    SimpleTrigger simpleTrigger = new SimpleTrigger("mytrigger",sched.DEFAULT_GROUP,new Date(),null,SimpleTrigger.REPEAT_INDEFINITELY,30L*5000L);

但是,如果我今天安排工作@ 2'0 时钟和 3'0 时钟,明天我将其更改为 5'0 时钟和 7'0 时钟和 11'0 时钟,我怀疑如果固定间隔我们在上面调用它方式但它不是固定的或周期性的间隔我们如何处理它。关于我的查询的任何建议或想法或示例....

4

1 回答 1

0

您可以做的是在文件或数据库中定义间隔并从那里读取。

还要定义一个JobListener

将间隔值存储在JobDataMap中,每次作业开始时,使用侦听器方法jobToBeExecuted()并从文件/数据库中读取值并将其与JobDataMap.

如果它们相同,则没有完成更新并且作业运行,如果它被更改,则使用重新安排作业Scheduler.rescheduleJob(TriggerKey triggerKey,Trigger newTrigger)

请注意,此方法有一个小问题,配置只会在作业运行后更改,因此即使您更新文件/数据库,下一次运行仍将是旧时间,并且只有之后的运行才会在新的时间。

于 2012-07-31T13:48:44.243 回答