2

ActorRefすでに作成されている可能性のある を取得したいと思います。context.actorForlive を返さなかった場合にのみ呼び出す標準的な方法はありActorRefますcontext.actorOfか? その逆も問題ありません (つまり、 を呼び出しcontext.actorOf、アクターが既に存在する場合にのみ を呼び出しますcontext.actorFor)。

4

1 に答える 1

6

最初に: get-or-create は、それを実行するエンティティが 1 つだけ存在する場合にのみ機能します (そうしないと、それを見つけたときにどのように作成されたかがわかりません)。これは、将来のアクターの親がこのコードを配置する場所であることを意味します。

アクター内では非常に単純です。

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 に答える