Написание выражения cron в источниках - PullRequest
3 голосов
/ 15 марта 2011

Я использую планировщик задач пружин (ConcurrentTaskScheduler) для планирования своих задач.Я использую API

public ScheduledFuture schedule(Runnable task,Trigger trigger)

для выполнения своих задач. Я использую триггер CronTrigger.
Я инициализирую триггер, используя следующую инструкцию

Trigger trigger = new CronTrigger(cronExp);

Iнужно написать cronExp таким образом, чтобы он начинался с определенной даты и с тех пор выполнялся ежедневно.

Я проверил API для ConcurrentTaskScheduler, но я мог найти подходящий API для достижения / я мог пропустить некоторыеAPI.

Может кто-нибудь предложить мне способ выполнения вышеуказанного требования?

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

Насколько мне известно, вы не можете использовать CronTrigger Spring для запуска только с определенной даты.

Синтаксис Cron не поддерживает ежедневный запуск чего-либо с произвольной даты;он поддерживает EITHER , выполняющий что-то ежедневно ИЛИ , выполняющийся один раз в произвольную дату - но не оба одновременно.Это означает, что вы можете использовать два триггера: установить один триггер cron для запуска в начальную дату;затем создайте новый суточный триггер, когда этот первый триггер произойдет.

Однако это работает правильно только в том случае, если используемый вами триггер хрон поддерживает годы, например, Quartz имеет поле опционного года в триггере хрон.Весенний CronTrigger не поддерживает годы.Поэтому, если вы попытаетесь запланировать что-то на определенную дату (скажем, 0 0 12 26 1 ? на полдень в день Австралии), то это будет выполняться каждый год, а не один раз, вызывая создание дублирующих триггеров каждый год.Я рекомендую создать простой триггер для ежедневного запуска, а именно:

    Trigger trigger = new CronTrigger("0 0 12 * * ?);

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

    if ((new Date()).after(startDate)) {
        // Run your task here
    }
0 голосов
/ 21 марта 2013

Пожалуйста, найдите ссылку ниже

http://www.mkyong.com/spring/spring-quartz-scheduler-example/

Весной у нас есть этот встроенный кварцевый планировщик. Для планирования работы требуется только конфигурация xml. Здесь вы можете настроить выражение cron так, как вам нравится..

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

...