Akka集群成员查询

Akka集群成员查询,akka,akka-cluster,akka-remote-actor,Akka,Akka Cluster,Akka Remote Actor,使用akka集群,是否可以查询集群中当前有哪些成员?如果种子节点停止运行,并最终恢复运行,它是否可以找到其他成员将其用作种子节点?您可以获得当前集群成员的快照,如下所示: val system = ActorSystem(...) // whatever val members = Cluster(system).state.members 但这可能已经过时了。如果需要跟踪群集成员身份,则应订阅群集事件 val monitor = system.actorOf(Props[MyClusterM

使用akka集群,是否可以查询集群中当前有哪些成员?如果种子节点停止运行,并最终恢复运行,它是否可以找到其他成员将其用作种子节点?

您可以获得当前集群成员的快照,如下所示:

val system = ActorSystem(...) // whatever
val members = Cluster(system).state.members
但这可能已经过时了。如果需要跟踪群集成员身份,则应订阅群集事件

val monitor = system.actorOf(Props[MyClusterMonitor])
Cluster(system).subscribe(monitor, classOf[ClusterEvent.ClusterDomainEvent])
当集群成员的状态发生变化时,该参与者将收到集群成员的更新


种子节点除了被集群的其他成员列为种子外,没有其他特殊特性。一旦成员使用种子加入,它们就不再具有任何特殊关系,它们只是同一集群的成员。一个节点只能找出它认为是种子的节点(虽然你可以编写自己的代码在集群中传输数据,但我个人想不出一个这样的用例)。

我让subscribe to domain事件开始了,但问题出在这里。我使用2个节点A和B进行测试,其中一组作为种子。当A第一次出现,然后当B出现时,我在A上收到一条MemberUp消息,但当A下降而B仍在上升时,最终A回来时,B没有收到MemberUp消息。所以我认为被标记为种子可能与此有关。我不明白这里的一些基本问题吗?