Кварцевое планирование: использование DailyCalendar - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь запланировать работу кварца в соответствии со следующим планом:

Работа выполняется ежедневно и должна выполняться только с 9:30 до 18:00. Я пытаюсь добиться этого через DailyCalendar. Вот как выглядит мой DailyCalendar:

DailyCalendar dCal = new DailyCalendar(startTimeString, endTimeString);
dCal.setTimeZone(TimeZone.getDefault());
dCal.setInvertTimeRange(true);

где строки времени начала и окончания имеют формат ЧЧ: ММ

Далее я пытаюсь запланировать эту работу:

Scheduler myscheduler = StdSchedulerFactory.getDefaultScheduler();
SimpleTrigger trigger = new SimpleTrigger();
myscheduler.addCalendar("todcal", cal, true, true);
trigger.setName("TRIGGER " + alertName);
trigger.setJobName(alertName);
trigger.setJobGroup(alertName);
trigger.setCalendarName("todcal");
logger.info("Adding TOD job");
myscheduler.scheduleJob(trigger);    // line causing exception
myscheduler.start();

Как только scheduleJob вызывается, я вижу следующее исключение:

Based on configured schedule, the given trigger will never fire.

Конфигурация мне подходит, но я не могу найти пример кода для использования DailyCalendar, поэтому я могу ошибаться здесь. Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

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

0 голосов
/ 13 марта 2011

Работа выполняется ежедневно и должна быть только исполнено с 9:30 до 18:00.

Как часто должна выполняться работа в течение этого периода времени? Однажды? Раз в час? Каждые 10 секунд?

Вам необходимо определить интервал повторения для вашего триггера. Посмотрите на setRepeatInterval(long repeatInterval) метод SimpleTrigger. Он определяет в миллисекундах интервал, с которым триггер будет повторяться.

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