我想获得一个可能已经创建的ActorRef
。是否有标准的方式来呼叫context.actorFor
,并且只有在它未返回实时ActorRef
的情况下,请致电context.actorOf
?反之亦然(即调用context.actorOf
,并且只有当演员已经存在时,才调用context.actorFor
)。
答案 0 :(得分:6)
首先关闭:get-or-create只有在只有一个实体的情况下才能工作(否则你将无法确定它是如何创建的)。这意味着准演员的父母是放置此代码的地方。
在演员中,这是非常直截了当的:
val child =
context.child(name) match {
case None => context.actorOf(Props(...), name)
case Some(c) => c
}
请不要使用actorFor
,在{* 3}}的Akka 2.2中弃用它。在这种情况下,context.child()
可以更有效地完成您想要的工作。