2015-06-01 54 views
0

我想在石英作業上使用自己的錯誤處理。發生異常時,每個作業都有不同的等待時間。例如,作業每30秒運行一次,但發生異常時,作業應等待5分鐘。在groovy中手動設置石英作業的nextFireTime

我試過這種方法,但它不工作:

SchedulerFactory sf = new StdSchedulerFactory() 
Scheduler sched = sf.getScheduler()   
def name = "jobname" 
Trigger trigger = sched.getTrigger(new TriggerKey("trigger_" + name)) 
def currentDate = new Date() 
use (TimeCategory) { 
    currentDate = currentDate + 300.seconds 
} 
trigger.nextFireTime = currentDate 

作業在30秒內再次運行。

我在做什麼錯?

回答

0

我可能是錯的,但您確定只需設置nextFireTime屬性即可安排工作嗎?

我想你必須使用http://quartz-scheduler.org/api/2.2.0/org/quartz/Scheduler.html#rescheduleJob(org.quartz.TriggerKey org.quartz.Trigger)重新安排工作。

例如

SchedulerFactory sf = new StdSchedulerFactory() 
Scheduler sched = sf.getScheduler()   
def name = "jobname" 
Trigger trigger = sched.getTrigger(new TriggerKey("trigger_" + name)) 
trigger.repeatInterval = 30000 
sched.rescheduleJob(trigger.name, trigger.group, trigger) 

這將運行在5分鐘的工作,然後你必須重新安排它在30秒內運行。

+0

感謝您的回答,可惜沒有簡單的解決方案。 – Peter