我在我的播放应用程序中配置了Akka调度程序。它工作正常,但现在问题是我有两个相同的应用程序在群集中运行的实例。因此调度程序也运行了两次。我希望它只为整个应用程序运行一次。是否有一些规定在akka实现这一目标。此外,java相关的帮助也很明显。
答案 0 :(得分:4)
为此,您需要使用模块Akka Cluster Singleton
:http://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")