Я настроил планировщик Akka в своем игровом приложении. Он работает нормально, но теперь проблема в том, что у меня есть два экземпляра одного и того же приложения, запущенного в кластере. Поэтому планировщик также работает дважды. Я хочу, чтобы он запускался только один раз для общего приложения. Есть ли какое-то положение в акке для достижения этого. Также будет оказана помощь по Java.Запуск планировщика akka только один раз в кластере
3
A
ответ
3
Для этого вам нужно будет использовать модуль Akka Cluster Singleton
: http://doc.akka.io/docs/akka/snapshot/java/cluster-singleton.html
Этот модуль обеспечивает возможность иметь только один актер в пределах всего кластера. Следующий код объясняет, как это сделать в 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")