全功能Cron调度Akka流

时间:2019-03-05 18:33:43

标签: akka akka-stream

在akka流中,可以执行以下操作:

Source.tick(0.seconds, 15.seconds, "Hello")

您的流每15秒将收到一个刻度元素“ Hello”。我正在寻找的可能性是做同样的事情,但是要像cron这样的时间表。 “每个星期一下午5点”。

1 个答案:

答案 0 :(得分:1)

我知道了。有一个akka插件akka-quartz-scheduler,它允许配置一些石英时间表配置,如下所示:将本节添加到akka.conf

akka {
  quartz.schedules {
    SomeSchedule {
      expression = "0 0 1 * * ?"
      timezone = "GMT-7"
      description = "Do something every day at 1 a.m. SF time."
    }
  }
}

然后安排

    case class Signal(someData: String)

    implicit val system: ActorSystem = ActorSystem("lebulbeaux-system")
    implicit val materializer: ActorMaterializer = ActorMaterializer()
    // needed for the future flatMap/onComplete in the end
    implicit val executionContext: ExecutionContextExecutor = system.dispatcher

    val source: Source[Signal, ActorRef] = Source.actorRef[Signal](100, OverflowStrategy.fail)

    val ref: ActorRef = Flow[Signal].to(Sink.foreach(signal => println(signal.someData))).runWith(source)

    import com.typesafe.akka.extension.quartz.QuartzSchedulerExtension

    QuartzSchedulerExtension(system).schedule("SomeSchedule", ref, Signal("Hello!"))

    // scroll

现在您将在每天SF上午1点收到信号消息。

另外,请查看此issue,了解使用Source.actorRef

的更多选项