2017-08-07 68 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来覆盖丢弃实例并创建新实例的情况。 –