【问题标题】:Akka Stream - Timer or Scheduler like CRONAkka Stream - 定时器或调度器,如 CRON
【发布时间】:2016-11-23 08:57:52
【问题描述】:

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

【问题讨论】:

    标签: scala akka-stream


    【解决方案1】:

    最常用的一种是akkaquartz调度器: https://github.com/enragedginger/akka-quartz-scheduler

    这是我写的,没有额外的依赖,比使用花里胡哨的石英更轻量级: https://github.com/johanandren/akron

    【讨论】:

      【解决方案2】:

      使用 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 流中获取 ScheduleAkkaStream 事件?调用 Source.tick() 会不会更简单
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我用过:

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

        【讨论】:

        • 我不认为这就是问题的意思。根据接受的答案,它也希望每 24 小时运行一次。
        • 第一个参数表示开始的时间,第二个参数表示之后的时间会重复。
        猜你喜欢
        • 2016-12-26
        • 1970-01-01
        • 2019-07-27
        • 1970-01-01
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 2018-06-12
        • 1970-01-01
        相关资源
        最近更新 更多