2016-06-23 5 views
3

Я настроил планировщик Akka в своем игровом приложении. Он работает нормально, но теперь проблема в том, что у меня есть два экземпляра одного и того же приложения, запущенного в кластере. Поэтому планировщик также работает дважды. Я хочу, чтобы он запускался только один раз для общего приложения. Есть ли какое-то положение в акке для достижения этого. Также будет оказана помощь по Java.Запуск планировщика akka только один раз в кластере

ответ

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")