安排每个月第一天的工作

时间:2016-10-24 21:20:50

标签: scala akka scheduled-tasks

我需要在每个月的第一天安排任务。到目前为止,我一直在使用它:

system.scheduler.schedule(0.microseconds, 30.days, schedulerActor, "update")

但正如你可能已经猜到的那样,这最终有时每月两次(三月)或一个月(二月)都没有执行任务。有没有更好的方法使用Akka Scheduler安排每月第一天的任务?

1 个答案:

答案 0 :(得分:3)

内置的Akka调度程序更像是一个延迟器而不是调度程序。我建议使用akka-quartz-scheduler。此模块允许您实际安排任务,以便在需要时运行。

用法很简单。一些配置:

akka {
  quartz {
    schedules {
      YourScheduleName {
        description = "A cron job that fires off every first of the month at 5AM"
        expression = "0 0 5 1 1/1 ? *"
      }
    }
  }
}

然后在代码中:

case object Tick
val yourActor = system.actorOf(Props[YourActor])
QuartzSchedulerExtension(system).schedule("YourScheduleName", yourActor, Tick)