【问题标题】:Is akka Scheduler singleton?akka调度器是单例的吗?
【发布时间】:2018-02-05 17:59:51
【问题描述】:

如果我有 3 个节点的集群,下面的代码会为每个节点创建一个调度程序还是 3 个调度程序?我对文档中的上下文有点困惑。

  system.scheduler.schedule(50.milliseconds, 5.seconds, wire[SchedulerRunnable])

在那里你可以找到返回一个实例的调度程序方法 akka.actor.Scheduler,这个实例对于每个 ActorSystem 都是唯一的,并且是 在内部用于安排在特定时间点发生的事情 时间。

https://doc.akka.io/docs/akka/2.5.5/scala/scheduler.html

【问题讨论】:

    标签: akka akka-cluster lagom


    【解决方案1】:

    它将创建 3 个调度程序,每个节点上一个。

    正如 James 在 cmets 中指出的那样,集群只有一个调度程序的一种方法是使用 cluster singleton 并在 preStart 中设置调度(因此,如果具有单例的节点崩溃并在另一个,您的日程安排也将重新开始)。

    如果您查看AuctionScheduler in the Lagom online auction example,您还会看到一种稍微不同的可靠调度方法,同样使用 Akka 的调度程序来触发自身,然后从读取端获取需要做什么的信息。

    【讨论】:

    • 谢谢!那么为每个集群创建一个调度程序的最佳方法是什么?我应该使用单例演员吗?
    • 你需要创建一个集群单例,并在它的preStart方法中启动定时任务。
    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多