немедленно выполнить задание

98
5

Я пытаюсь запустить аварийную работу сразу после запланированного с кварцем. мой код ниже. Я даю текущее время как startTime. Для выполнения задания после расписания требуется 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);

спросил(а) 2021-01-25T14:02:06+03:00 4 месяца, 4 недели назад
1
Решение
133

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

scheduler.triggerJob(jobDetail.getKey());

ответил(а) 2021-01-25T14:02:06+03:00 4 месяца, 4 недели назад
63

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

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

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

ответил(а) 2021-01-25T14:02:06+03:00 4 месяца, 4 недели назад
45

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

ответил(а) 2021-01-25T14:02:06+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема