在群集中仅运行一次akka调度程序

时间:2016-06-23 10:27:23

标签: java akka akka-cluster

我在我的播放应用程序中配置了Akka调度程序。它工作正常,但现在问题是我有两个相同的应用程序在群集中运行的实例。因此调度程序也运行了两次。我希望它只为整个应用程序运行一次。是否有一些规定在akka实现这一目标。此外,java相关的帮助也很明显。

1 个答案:

答案 0 :(得分:4)

为此,您需要使用模块Akka Cluster Singletonhttp://doc.akka.io/docs/akka/snapshot/java/cluster-singleton.html

此模块提供了在整个群集中只有一个actor的功能。 以下代码说明了如何在Scala中执行此操作,我认为Java它应该非常相似:

context.actorOf(ClusterSingletonManager.props(YourScheduler.props, PoisonPill, ClusterSingletonManagerSettings(context.system)), "singletonScheduler")
val singletonScheduler = system.actorOf(ClusterSingletonProxy.props(
  singletonManagerPath = "/user/app/singletonScheduler",
  settings = ClusterSingletonProxySettings(system)),
  name = "singletonSchedulerProxy")