2012-07-31 65 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)重新安排作業。

請注意,此方法存在一些問題,配置只會在作業運行後纔會更改,因此即使您更新了文件/數據庫,下次運行仍然會在舊時間,只有在運行後那將是新的時代。