akka.net是一种获取或创建演员的方法

Zeu*_*s82 4 c# akka.net

对于我的actor层次结构,在通过几个actor处理数据之前,我不知道我需要的所有actor,因此我正在寻找一种方法来返回现有的ActorRef或创建一个新的动作.这就是我希望下面的代码创建一个actor,如果一个不存在于"my-id-1"或者返回已经存在的那个.

Context.ActorOf(MyActor.Props(message), "my-id-1");
Run Code Online (Sandbox Code Playgroud)

InvalidActorNameException如果actor已经存在,上面的代码将(如文档所示)抛出一个.我怎样才能在Akka.net中实现这一目标?

Bar*_*ski 10

您可以使用Context.Child(actorName)方法检查当前actor是否具有提供名称的子项.如果目标actor存在或者ActorRefs.Nobody没有这样的actor ,它将返回目标actor的actor ref .

您的案例中的代码可能如下所示:

var child = Context.Child(actorName);
if (Equals(child, ActorRefs.Nobody))
    child = Context.ActorOf(MyActor.Props(message), actorName);
Run Code Online (Sandbox Code Playgroud)