Кварцевый планировщик для Java-Как запускать работу каждые 5 минут - PullRequest
5 голосов
/ 01 февраля 2012

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

SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sche = sf.getScheduler();

JobDetail job = newJob(RomeJob.class).withIdentity("Id1", "Rome").build();
CronTrigger trigger = newTrigger().withIdentity("Id1Trigger", "Rome").withSchedule(cronSchedule("0 0/5 * * * ?"))
.build();
sche.scheduleJob(job, trigger);
sche.start();

Но иногда его работа иногда не работает.Пожалуйста, скажите мне, я что-то здесь упускаю?

Ответы [ 3 ]

6 голосов
/ 01 февраля 2012

Вместо

0 0/5 * * * ?

используйте

0 */5 * * * *

Редактировать: Это приводит к тому, что ваша задача выполняется в 0 секунд каждой минуты, которая делится на 5.

Редактировать 2: 0/5 означает только минуты 0 и 5.

4 голосов
/ 01 февраля 2012

Не используйте расписание Cron, а вместо этого простое расписание:

Trigger trigger = newTrigger().
  withIdentity("Id1Trigger", "Rome").
  withSchedule(
    simpleSchedule().
      withIntervalInMinutes(5).
      repeatForever()
  ).build();
0 голосов
/ 01 февраля 2012

У вас есть много способов, одним из которых является использование построителя триггеров, например,

trigger = newTrigger()
    .withIdentity("mytrigger", "group1")
    .startNow()
    .withSchedule(simpleSchedule()
            .withIntervalInMinutes(5)
            .repeatForever())
    .build();
...