scala Akka流定时器或调度程序,如Cron

7fyelxc5  于 2022-11-09  发布在  Scala
关注(0)|答案(4)|浏览(147)

我在Scala上使用Akka Stream。我想设置一个每24:00运行的调度程序。我试着去找它。但我找不到我想做的事。你能告诉我怎么写代码吗?

aoyhnmkz

aoyhnmkz1#

这是在评论中提到的,但实际上应该是只使用Akka-Streams的首选解决方案:

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

vh0rcniy2#

使用Build in 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
)

然后在参与者中,当收到ScheduleAkkaStream时,运行作业

6jjcrrmo

6jjcrrmo3#

最常用的是Akka Quartz调度程序:https://github.com/enragedginger/akka-quartz-scheduler
这是由我编写的,没有额外的依赖项,比使用带有更少花哨的Quartz要轻一点:https://github.com/johanandren/akron

9o685dep

9o685dep4#

我使用:

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

相关问题