Акка-Кварц-Планировщик, как использовать выражение cron - PullRequest
0 голосов
/ 11 января 2019

Когда я использую задания и триггеры для планирования публикации сообщений, это работает

 val job = JobBuilder.newJob(classOf[ScheduledMessagePublisher]).withIdentity("Job", "Group").build()
                  val trigger: CronTrigger = TriggerBuilder.newTrigger()
                    .withIdentity("Trigger", "Group")
                    .withSchedule(CronScheduleBuilder.cronSchedule("0 33 10 11 JAN ? 2019"))
                    .forJob("Job", "Group")
                    .build
                  quartz.start()
                  quartz.scheduleJob(job, trigger)

Но когда я использую актеры и QuartzSchedulerExtension, мой код никогда не срабатывает, когда пришло время, журналы просто пишут batch acquisition of 0 triggers

val test = context.actorOf(Executor.props(client))
      QuartzSchedulerExtension(context.system).createSchedule("Test", None, "0 33 10 11 JAN ? 2019")
      QuartzSchedulerExtension(context.system).schedule("Test", test, Executor.PublishMessage)

Я думаю, что проблема в выражении cron "0 33 10 11 JAN ? 2019", потому что, когда я использую только секунды и минуты, это работает "0 30 * * * ? *"

1 Ответ

0 голосов
/ 11 января 2019

Ваше cron выражение правильное.

Но часовой пояс по умолчанию для QuartzSchedulerExtension равен UTC . Проверьте документ здесь .

Следовательно, вам необходимо указать текущий часовой пояс. Вот решение:

val test = context.actorOf(Executor.props(client))
  QuartzSchedulerExtension(context.system).createSchedule("Test", None, "0 33 10 11 JAN ? 2019", None, TimeZone.getDefault)
  QuartzSchedulerExtension(context.system).schedule("Test", test, Executor.PublishMessage)
...