有没有标准的方法来做'actorFor orElse actorOf`?

Noe*_*Yap 2 akka

我想得到一个ActorRef可能已经创建的.是否有一种标准的呼叫方式context.actorFor,只有当它没有返回实时ActorRef通话时context.actorOf?反之亦然(即呼叫,context.actorOf并且只有当演员已经存在时,才打电话context.actorFor).

Rol*_*uhn 6

首先:get-or-create只有在只有一个实体的情况下才能工作(否则你将无法确定它是如何创建的).这意味着准演员的父级是放置此代码的地方.

在演员中,这是非常直截了当的:

val child =
  context.child(name) match {
    case None    => context.actorOf(Props(...), name)
    case Some(c) => c
  }
Run Code Online (Sandbox Code Playgroud)

请不要使用actorFor,它在Akka 2.2中被弃用是有充分理由的.在这种情况下context.child(),你想要更有效率.

  • 或:val child = context.child(name).getOrElse(context.actorOf(Props(...),name)) (3认同)