对于我的actor层次结构,在通过几个actor处理数据之前,我不知道我需要的所有actor,因此我正在寻找一种方法来返回现有的ActorRef或创建一个新的动作。这就是我希望下面的代码创建一个actor,如果在#34; my-id-1"或者返回已经存在的那个。
Context.ActorOf(MyActor.Props(message), "my-id-1");
如果演员已经存在,上面的代码将(如文件所述)抛出InvalidActorNameException
。我怎样才能在Akka.net中实现这个目标?
答案 0 :(得分:10)
您可以使用Context.Child(actorName)
方法检查当前演员是否拥有提供名称的子节点。它将返回目标actor的actor ref(如果它存在)或ActorRefs.Nobody
如果没有这样的actor。
您的案例中的代码可能如下所示:
var child = Context.Child(actorName);
if (Equals(child, ActorRefs.Nobody))
child = Context.ActorOf(MyActor.Props(message), actorName);