Akka Stream - 计时器或调度程序,如CRON

时间:2016-07-20 08:15:47

标签: scala akka-stream

我在Scala上使用Akka Stream。 我想设置一个每24:00运行一次的调度程序。我试图搜索它。但我无法找到我想做的事情。你能告诉我如何编写代码吗?

4 个答案:

答案 0 :(得分:4)

使用Akka调度程序中的build,请参阅: http://doc.akka.io/docs/akka/current/scala/scheduler.html

您可以使用以下调度程序:

system.scheduler.schedule(
  initialDelay = FiniteDuration(/*offset to next 24:00*/),
  interval = FiniteDuration(24, TimeUnit.HOURS),
  receiver = self,
  message = ScheduleAkkaStream
)

然后在actor中,当收到ScheduleAkkaStream时,运行作业

答案 1 :(得分:2)

这是在评论中提到的,但实际上应该是仅使用akka流的首选解决方案:

Source.tick(0.seconds, 24.hours, Done).runForeach { x =>
   //do something   
}

答案 2 :(得分:0)

最常用的是akka石英调度程序: https://github.com/enragedginger/akka-quartz-scheduler

这是我写的,并没有额外的依赖性,比使用更少的铃铛和口哨的石英更轻量级: https://github.com/johanandren/akron

答案 3 :(得分:0)

我用过:

system.scheduler.scheduleWithFixedDelay(10.seconds, 30.seconds)(
 () => {
     println("Action")
   }
)