выполнить работу немедленно - PullRequest
0 голосов
/ 03 ноября 2011

Я пытаюсь запустить аварийную работу сразу после запланированного с кварцем.код нижеТем не менее, выполнение задания по расписанию занимает 30-40 секунд. Как можно запустить сразу.

// Trigger the job to run now, and then repeat every 40 seconds 
jobTrigger= newTrigger() 
.withIdentity(Long.toString(emergencyJob.getId()), Long.toString(emergencyJob.getVariant().getId())) 
.withPriority(emergencyJob.getPriority()) 
.startAt(new Date(ctime)) 
.withSchedule(simpleSchedule().withMisfireHandlingInstructionFireNow() 
) 
.build(); 

scheduler.scheduleJob(jobDetail, jobTrigger);

Ответы [ 3 ]

8 голосов
/ 03 ноября 2011

Вы также можете запустить его:

scheduler.triggerJob(jobDetail.getKey());
1 голос
/ 03 ноября 2011

Это всего лишь предположение (прошло уже много времени с тех пор, как я использовал кварц), но, поскольку вы создаете экземпляр Date до того, как фактически вызовете build(), он может оказаться не в состоянии удовлетворить это ограничение по времени и просто срабатывает через 40 секунд, когда срабатывает следующий запланированный триггер. Попробуйте что-то вроде этого, чтобы подтвердить:

.startAt(new Date(System.currentTimeMillis() + 1000))

Играйте со значением 1000 мс в соответствии с вашими потребностями. Это должно дать ему немного больше времени для выполнения первого запланированного триггера.

0 голосов
/ 23 мая 2014

Возможно, немного поздно, но, возможно, кто-то найдет это полезным. У меня была такая же проблема с кварцем на JBoss AS (триггеры выполнялись с опозданием - примерно на 20-30 секунд без видимой причины). Я пришел к выводу, что это вызвано некоторой ошибкой в ​​JBoss. То же приложение отлично работало на Glassfish. Я изменил только PU, чтобы работать со связью затмения, и другие постоянства работали нормально на JBoss, поэтому я не думаю, что проблема там. Такое поведение происходило только при использовании хранилища задач базы данных кварца, с хранилищем ОЗУ работало нормально. Чтобы ответить на вопрос. Если вы используете хранилище задач базы данных, подумайте о том, чтобы изменить его на хранилище ОЗУ для меня, что вызвало срабатывание триггеров во время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...