2

我想得到一个ActorRef可能已经创建的。是否有标准的调用方式,context.actorFor并且只有在它没有返回 live 时才ActorRef调用context.actorOf?反之亦然(即调用context.actorOf,并且仅当参与者已经存在时,调用context.actorFor)。

4

1 回答 1

6

首先:get-or-create 只能在只有一个实体执行它的情况下才能工作(否则,当您找到它时,您将永远无法确定它是如何创建的)。这意味着准演员的父母是放置此代码的地方。

在演员内部,这是非常直接的:

val child =
  context.child(name) match {
    case None    => context.actorOf(Props(...), name)
    case Some(c) => c
  }

请不要使用actorFor,它在 Akka 2.2 中已被弃用,这是有充分理由的。在这种情况下context.child(),可以更有效地执行您想要的操作。

于 2013-07-17T15:05:06.247 回答