С кластером akka можно ли запросить, какие члены находятся в кластере? Если семенной узел опускается и, в конце концов, возвращается, может ли он узнать, какие другие члены используют его в качестве семенного узла?Akka Cluster member query
0
A
ответ
2
Вы можете получить снимок нынешних членов кластера, как это:
val system = ActorSystem(...) // whatever
val members = Cluster(system).state.members
Но это может быть устаревшей. Если вам нужно отслеживать членство в кластере, вы должны подписаться на события кластера.
val monitor = system.actorOf(Props[MyClusterMonitor])
Cluster(system).subscribe(monitor, classOf[ClusterEvent.ClusterDomainEvent])
Этот актер будет получать обновления членов кластера в качестве изменений состояния.
Узлы семян не имеют особых качеств, кроме как перечисляемых как семена другими членами кластера. Как только член использовал семя для соединения, у них больше нет особых отношений, они просто являются членами одного и того же кластера. Узел может только узнать, какие узлы он считает семенами (хотя вы могли бы написать свой собственный код для передачи данных по всему кластеру, лично я не могу придумать для этого вариант использования).
Ну, я получил подписку на событие домена, но вот проблема. Я тестирую с помощью двух узлов A и B, причем A задается как семя. Когда A сначала воспитывается, а затем, когда появляется B, я получаю сообщение MemberUp на A, но когда A спускается с B все еще вверх, и, в конце концов, A возвращается, B не собирает сообщение MemberUp. Поэтому я подумал, что А, отмеченное как семя, может иметь отношение к этому. Разве я не понимаю здесь нечто принципиальное? – samyem