当我使用作业和触发器来安排消息发布时,它会起作用
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)
但是,当我使用actor和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 * * * ? *"
答案 0 :(得分:2)
您的cron
表达式正确。
但是QuartzSchedulerExtension
的默认时区为 UTC 。检查文档here。
因此,您明确需要指定当前时区。 解决方法如下:
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)