Как запускать каждые 25 секунд в Кварцевом планировщике? - PullRequest
16 голосов
/ 07 июня 2011

Я использую API Quartz Scheduling для Java.Не могли бы вы помочь мне запускать каждые 25 секунд, используя cron-выражение.Это просто задержка.Оно не обязательно должно начинаться всегда с секунды 0. Например, последовательность выглядит следующим образом: 0:00, 0:25, 0:50, 1:15, 1:40, 2:05 и т. Д. До минуты 5, когдапоследовательность начинается снова со секунды 0. Спасибо.

Ответы [ 7 ]

16 голосов
/ 07 июня 2011

Я не думаю, что cron expression позволит вам это сделать, но вы можете использовать

SimpleScheduleBuilder.repeatSecondlyForever( 25 )

, так как 300 (5 минут) - это кратное 25, которое будет повторяться автоматически.

9 голосов
/ 18 марта 2013

Если вы хотите, чтобы задание запускалось с регулярным интервалом, вы можете использовать Кварц SimpleTrigger с указанным repeatInterval.

8 голосов
/ 05 февраля 2016

С Кварц 2.1.5 это поможет:

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0/20 * * * * ?"))
    .build();
6 голосов
/ 26 февраля 2016

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

 0/25 0/5 * * * *
15/25 1/5 * * * *
 5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *

Первый триггер срабатывает в 0:00:25, 0:00:50; затем срабатывает второй триггер в 0:01:15 и 0:01:40; третий в 0:02:05, 0:02:30, 0:02:55; четвертый в 0:03:20, 0:03:45; и, наконец, пятый в 0:04:10 и 0:04:35. Затем первый запуск запускается снова в 0:05:00 и т. Д.

Это работает только потому, что 25 секунд делятся равномерно на 5 минут (что, в свою очередь, равномерно делится на час). Если вы хотели это каждые 23 секунд? Забудь об этом!

3 голосов
/ 07 июня 2011
0 голосов
/ 01 декабря 2016

Вы можете запланировать выполнение задания постоянно, но регулировать частоту с помощью Camel Throttler.

<route>
  <from uri="jms:queue:TestQueue"/>
  <!-- throttle 1 messages per 25 sec -->
  <throttle timePeriodMillis="25000">
    <constant>1</constant>
    <to uri="bean:TestBean?method=testMethod"/>
  </throttle>
</route>
0 голосов
/ 07 июня 2011

У вас не может быть такого расписания для кварца.

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

...