For my actor hierarchy, I do not know all the actors I need until I process the data through a few actors, so I'm looking for a way to either return an existing ActorRef or create a new action. This is what I would like the code below to either create an actor if one does not exist at "my-id-1" or return the one that already exists.
Context.ActorOf(MyActor.Props(message), "my-id-1");
The above code will (as documented) throw a InvalidActorNameException
if the actor already exists. How can I accomplish this in Akka.net?
You can check if current actor has a child with provided name by using Context.Child(actorName)
method. It will return actor ref of the target actor if it exists or ActorRefs.Nobody
if there is no such actor.
Code in your case could look like:
var child = Context.Child(actorName);
if (Equals(child, ActorRefs.Nobody))
child = Context.ActorOf(MyActor.Props(message), actorName);
来源:https://stackoverflow.com/questions/39905090/akka-net-is-there-a-a-way-to-get-or-create-actor