2012-07-31 61 views
0

在石英调度我有一个疑问调用Quartz调度在非周期时间间隔

例如

如果我们安排在每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时钟,我的疑问是如果固定的话val我们以上述方式称它,但它不是固定的或定期的间隔,我们如何处理它。有关我的查询的任何建议或意见或示例....

+0

也许每个小时都会开始日常工作,工作会检查他的小时是否可以运行任务。 – JIV 2012-07-31 09:26:45

回答

0

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

另外定义一个JobListener

Store中JobDataMap和每一个作业开始时间的间隔值,使用监听器方法jobToBeExecuted()并从文件/数据库中读取值,并将其与在JobDataMap的值进行比较。

如果它们相同,则不做更新并且作业运行,如果更改,则使用Scheduler.rescheduleJob(TriggerKey triggerKey,Trigger newTrigger)重新安排作业。

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