2015-01-07 3 views
0

Привет, следующий код запускается каждые 60 секунд.Java Quartz 2.2.1 - Schedule

Как я могу изменить его так, чтобы он срабатывал один раз в день в 4 утра навсегда.

Я использую Quartz 2.2.1 с использованием Tomcat 7.0.53

Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("TestTrigger", "group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(interval_seconds).repeatForever())
.build();

Я посмотрел на документацию exmaples, но получаю ошибки.

ответ

0

Вы можете использовать startAt (Дата triggerStartTime) метод с нужного времени (4 утра), а затем повторить его навсегда каждые 24 часа

 Trigger trigger = newTrigger() 
     .withSchedule(simpleSchedule() 
      .withIntervalInHours(24) 
      .repeatForever()) 
     .startAt(new SimpleDateFormat("dd/MM/yyyy hh:mmaaa").parse("24/01/2015 04:00AM")) 
     .build(); 
+0

Можете ли вы показать мне фрагмент startAt()? Я продолжаю получать ошибки, используя это. Параметр для startAt() - это объект Date. Так как я могу получить только время? Если я пройду Дата 1/7/2014 4:00 утра, то как он узнает, чтобы запустить его на следующий день в 4 часа ночи? –

+0

См. Мой отредактированный ответ, может быть, он помогает –

+0

Спасибо. Это очень помогает! –

0

Используйте Cron-based Trigger:

Trigger trigger = TriggerBuilder.newTrigger() 
    .withSchedule(cronSchedule("0 0 4am * * ?")) 
    .build(); 
0

если вы хотите более простой способ создать дату, затем используйте DateBuilder, чтобы создать дату с требуемыми параметрами. dateOf (или todayAt) должен работать.

Что-то вроде:

.startAt(DateBuilder.dateOf(4, 0, 0))

+0

Я получаю неопределенный dateAt (4, 0, 0), когда я попробовал ваше предложение. –

+0

Я видел, что я написал dateAt() вместо dateOf(). Он не должен компилироваться с dateAt(), я бы ожидал. Я отредактировал ответ с dateOf(), надеюсь, что это сработает. –

Смежные вопросы