quartz 0.4.2 & grails 1.3.3

3 views
Skip to first unread message

wholegroup

unread,
Aug 3, 2010, 8:08:41 AM8/3/10
to ruGrails
Разбираюсь с плагином Quartz для grails. Помогите советом, если есть
время.

Не могу понять, почему при выполнение Job.triggerNow() задание не
выполняется сразу, а ждет какого-то таймаута.
Опытным путем выяснил, что данный параметр зависит от значения
org.quartz.jobStore.misfireThreshold, но смысл мне этого параметра не
ясен.
Логика работы Quartz правильная и так и должно быть ? Т.е. при вызове
triggerNow() задание не обязано сразу быть запущено на выполнение ?

clumsy

unread,
Aug 18, 2010, 3:21:49 AM8/18/10
to ruGrails
Как-то раз сталкивался с подобной проблемой.
Я думаю все дело в том, что по-умолчанию флаг concurrent равен true,
что означает, что задания не обязательно выполняются в порядке
поступления (об этом и многом другом упоминается на официальной
странице плагина). Можно строго упорядочить их выполнение по мере
поступления изменив этот флаг на false.
Job.triggerNow() меня также разочаровал, поэтому я сделал немного по
другому.
В контроллере я делал так:
def quartzScheduler
...
// Вот так можно изменить интервал выполнения работы
def trigger = quartzScheduler.getTrigger('<название триггера>',
'<название группы>')
trigger.repeatInterval=<здесь ставиться число long для временного
интервала между запусками задачи>
quartzScheduler.rescheduleJob(trigger.name, trigger.group, trigger)
...
// А вот выполнить задание незамедлительно можно вот так, запланировав
ее на "сейчас"
<название класса задачи, а-ля SomeJob>.schedule(new Date().getTime())
Reply all
Reply to author
Forward
0 new messages