在非周期时间间隔内调用Quartz调度程序

时间:2012-07-31 07:39:15

标签: java quartz-scheduler

在石英调度程序中,我有一个疑问

例如

如果我们每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时钟,我的疑问是如果我们调用固定时间间隔它在上面的方式,但它没有固定或周期性间隔我们如何处理它。关于我的查询的任何建议或想法或例子......

1 个答案:

答案 0 :(得分:0)

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

还要定义JobListener

将间隔值存储在JobDataMap中,每次作业开始时,使用侦听器方法jobToBeExecuted()并读取文件/ DB中的值,并将其与{{1}中的值进行比较}}

如果它们相同,则不进行更新并且作业运行,如果更改,则使用JobDataMap重新安排作业。

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