2015-02-11 135 views
0

對於akka集羣,是否可以查詢集羣中當前有哪些成員?如果種子節點出現故障並最終恢復正常,是否可以找出其他成員將其用作種子節點的其他成員?Akka集羣成員查詢

回答

2

您可以獲得當前羣集成員像這樣的快照:

val system = ActorSystem(...) // whatever 
val members = Cluster(system).state.members 

但是,這可能是過時的。如果您需要跟蹤羣集成員資格,則應訂閱羣集事件。

val monitor = system.actorOf(Props[MyClusterMonitor]) 
Cluster(system).subscribe(monitor, classOf[ClusterEvent.ClusterDomainEvent]) 

該角色將隨着羣集成員的狀態更改而接收更新。

種子節點除了被羣集的其他成員列爲種子以外沒有特殊的特性。一旦成員使用種子加入,它們就不再有任何特殊關係,它們只是同一個羣集的成員。一個節點只能找出它認爲是種子的節點(儘管你可以編寫你自己的代碼來圍繞羣集傳輸數據,但我個人無法考慮這種情況)。

+0

那麼我得到了訂閱域名事件,但這裏是問題所在。我正在用2個節點A和B進行測試,並將A設置爲種子。當A第一次出現,然後B出現時,我在A上得到了一個MemberUp消息,但是當A隨着B仍然上升而下降,並且最終A重新出現時,B沒有拿起MemberUp消息。所以我認爲A被標記爲種子可能​​與此有關。我在這裏不理解一些基本的東西嗎? – samyem 2015-02-12 14:03:18