2017-08-07 87 views
0

我有一個演員,我與另一個演員(家長)創建。我還從父代中產生了其他幾個Actor。樹的樣子:通過Akka演員參考其他演員

ParentActor 
-- ServiceActor 
-- ProcessActor1 
-- ProcessActor2 

現在我想通過解決此ServiceActor實例ProcessActor情況,但問題是,ServiceActor可能窒息在某個時候被殺死。我在父母身上處理這個問題,併爲ServiceActor提供重新啓動策略。

現在我的問題是,如果我創建了上述所有我的Actor,並且在幾個小時後ServiceActor由於Exception發生而重新啓動,我應該重新實例化ProcessActor的嗎?

舊的ServiceActor ActorRef引用仍然有效嗎?

回答

2

即使潛在角色多次重新啓動,ActorRef也是有效的。來自官方documentation

Actors豐富的生命週期掛鉤提供了一個有用的工具包來實現各種初始化模式。在ActorRef的生命週期中,演員可能會經歷幾次重新啓動,其中舊的實例被新的實例替換,無法看到只看到ActorRef的外部觀察者。

+0

它只適用於重新啓動,或者當我放棄舊實例並使用context.actorOf(...)創建一個新實例時,這也適用嗎? – sparkr

+0

它僅適用於重新啓動,您需要選擇actor來覆蓋丟棄實例並創建新實例的情況。 –