2015-06-01 3 views
0

Я хочу использовать собственную обработку ошибок на кварцевых работах. Каждое задание имеет другое время ожидания, когда возникает исключение. Например, задание выполняется каждые 30 секунд, но когда возникает исключение, задание должно ждать 5 минут.Настройка nextFireTime работы кварца вручную в groovy

Я попробовал этот подход, но он не работает:

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

Смежные вопросы