【发布时间】:2016-11-23 08:57:52
【问题描述】:
我在 Scala 上使用 Akka Stream。 我想设置一个每 24:00 运行的调度程序。我试图寻找它。但我找不到我想做的事。你能告诉我怎么写代码吗?
【问题讨论】:
标签: scala akka-stream
我在 Scala 上使用 Akka Stream。 我想设置一个每 24:00 运行的调度程序。我试图寻找它。但我找不到我想做的事。你能告诉我怎么写代码吗?
【问题讨论】:
标签: scala akka-stream
最常用的一种是akkaquartz调度器: https://github.com/enragedginger/akka-quartz-scheduler
这是我写的,没有额外的依赖,比使用花里胡哨的石英更轻量级: https://github.com/johanandren/akron
【讨论】:
使用 Akka 调度程序中的构建,请参阅: 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时,运行job
【讨论】:
这是在评论中提到的,但实际上应该是只使用 akka-streams 的首选解决方案:
Source.tick(0.seconds, 24.hours, Done).runForeach { x =>
//do something
}
【讨论】:
我用过:
system.scheduler.scheduleWithFixedDelay(10.seconds, 30.seconds)(
() => {
println("Action")
}
)
【讨论】: