2016-08-03 3 views
2

Следующий кластер singleton не запускается.Singleton cluster actor не запускается

commander = system.actorOf(
    ClusterSingletonManager.props(Commander.props(this), 
    terminationMessage = PoisonPill.getInstance, 
    settings = ClusterSingletonManagerSettings.create(system).withRole("commander") 
), name = "Commander") 

Никаких сообщений об ошибках не выбрасывается.

Журналы:

[INFO] [08/03/2016 11: 43: 58,656] [ScalaTest-вводного обкатки ClusterSuite] [akka.remote.Remoting] Запуск удаленного доступа [INFO] [08/03/2016 11: 43: 59.007] [ScalaTest-run-running-ClusterSuite] [akka.remote.Remoting] Началось удаление; прослушивание по адресам: [akka.tcp: //[email protected]: 59592] [INFO] [08/03/2016 11: 43: 59.035] [ScalaTest-run-running-ClusterSuite] [akka.cluster.Cluster (akka: // galaxyFarFarAway)] Cluster Node [akka.tcp: //[email protected]: 59592] - Запуск ... [INFO] [08/03/2016 11: 43: 59.218] [ScalaTest- run-running-ClusterSuite] [akka.cluster.Cluster (akka: // galaxyFarFarAway)] Cluster Node [akka.tcp: //[email protected]: 59592] - Зарегистрированный кластер JMX MBean [akka: type = Cluster] [INFO] [08/03/2016 11: 43: 59.218] [ScalaTest-run-running-ClusterSuite] [akka.cluster.Cluster (akka: // galaxyFarFarAway)] Узел кластера [akka.tcp: //[email protected] .0.1: 59592] - успешно начато [INFO] [08/03/2016 11: 43: 59.247] [galaxyFarFarAway-akka.actor.default-dispatcher-2] [akka.cluster.Cluster (akka: // galaxyFarFarAway)] Кластерный узел [akka.tcp: // galaxyFarFarAway @ 127 .0.0.1: 59592]. Метрики будут удалены из MBeans и могут быть неверными на некоторых платформах. Чтобы повысить точность метрики, добавьте «sigar.jar» в путь к классам и соответствующую родную библиотеку для конкретной платформы в «java.library.path». Причина: java.lang.ClassNotFoundException: org.hyperic.sigar.Sigar [INFO] [08/03/2016 11: 43: 59.257] [galaxyFarFarAway-akka.actor.default-dispatcher-2] [akka.cluster.Cluster (akka: // galaxyFarFarAway)] Cluster Node [akka.tcp: //[email protected]: 59592] - коллекция метрик началась успешно [INFO] [08/03/2016 11: 43: 59.268] [galaxyFarFarAway- akka.actor.default-dispatcher-3] [akka.cluster.Cluster (akka: // galaxyFarFarAway)] Cluster Node [akka.tcp: //[email protected]: 59592] - нет настроенных узлов семян, ручного кластера присоединиться требуется отсоединен от цели VM, адрес: '127.0.0.1:59574', транспорт: 'гнездо'

конфигурация:

akka { 
actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 
    default-dispatcher { 
    throughput = 10 
    } 
} 
cluster { 
    roles = [commander] 
} 

remote { 
    log-remote-lifecycle-events = off 
    netty.tcp { 
    hostname = "127.0.0.1" 
    port = 0 
    } 
} 
akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] 
} 

Когда я отлаживаю код класса Commander, конструктор даже не называется нигде. Когда я опускаю ClusterSingletonManager и просто создаю его с Props, он действительно работает, будет создан актер Commander. Я чувствую неправильную конфигурацию по этой проблеме. У вас есть какие-то замечания по этому поводу?

ответ

2

Вы правильно поняли: вы не указали конфигурацию семенного узла для кластеризации Akka. Вы можете увидеть это в последней строке журнала:

[akka.tcp: //[email protected]: 59592] - Нет семенные узлы настроены, ручной кластер присоединитесь требуется отсоединен от целевого VM, адрес: '127.0.0.1:59574', транспорт: 'socket'

Поскольку вы не указали какие-либо семенные узлы в файле конфигурации, Akka будет ждать, пока вы программным образом определяете семенные узлы.Вы можете указать семенные узлы в конфигурации, как это:

akka.cluster.seed-nodes = [ 
    "akka.tcp://[email protected]:2551", 
    "akka.tcp://[email protected]:2552" 
] 

В качестве альтернативы, вы можете вызвать метод joinSeedNodes присоединиться к кластеру программно. В обоих случаях вам необходимо указать хотя бы один семенной узел, который доступен. Сама актерская система также может выступать в роли семенного узла.

После того, как узлы семян были указаны и система актеров присоединилась к кластеру, функции Akka в зависимости от кластеризации (кластерные одиночные игры, осколки и т. Д.) Загрузятся. Вот почему вы можете запустить обычного актера, но не синглтона.

Для получения дополнительной информации о настройке узлов семян см. Akka cluster documentation.

Смежные вопросы