Кварцевый планировщик не срабатывает в данный момент - PullRequest
1 голос
/ 08 июля 2011

У меня есть программа, которая переносит задания на один час.Иногда он срабатывает в указанное время, а иногда пропускает время срабатывания.

В журналах нет исключений или ошибок.Как сделать так, чтобы триггер работал в указанное время?

Приглашается любая помощь.Мой код выглядит следующим образом:

StdSchedulerFactory sf = new StdSchedulerFactory();
Scheduler clusteredScheduler = sf.getScheduler();
Trigger tg = clusteredScheduler.getTrigger("myjob", "group1");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, schedulerConstants.HOUR);
Trigger tg = scheduler.getTrigger(
    schedulerConstants.START_PREPARE_SEARCH_CONSUMER_JOB_NAME,
    schedulerConstants.JOB_GROUP_NAME);
((CronTrigger) tg).setCronExpression(
    "0 " + cal.get(Calendar.MINUTE) + " " + cal.get(Calendar.HOUR_OF_DAY) + " * * ?");
clusteredScheduler.rescheduleJob("myjob", "group1", tg);

Это мой полный код.Иногда планировщик застревает и остается без ответа.Нет ошибок или исключений в журналах.Я попытался увеличить количество потоков в пуле потоков, и проблема сохраняется.

1 Ответ

2 голосов
/ 18 июля 2011

Ваш код недостаточен для определения вашей проблемы. Отображается только та часть кода, в которой вы обновляете существующий триггер (scheduler.getTrigger(...)). Возможно, вы забыли перенести задание после обновления триггера: Scheduler#rescheduleJob. Кроме того, будьте осторожны при повторном использовании одного и того же триггера с несколькими заданиями.

Ваш триггер - ежедневный, в определенное время (более конкретно - текущее время, и, скорее всего, добавлен один час). Вы пытались запустить систему в более частом триггере и посмотреть, что произойдет (если у вас нет лучшего способа автоматизировать этот тест)?

На всякий случай - если вы экспериментируете со смещением времени на вашем устройстве. на компьютере, чтобы увидеть, если он выполняет задание с указанными интервалами, он может на самом деле не работать, как вы ожидаете.

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