Zeus82
Zeus82

Reputation: 6375

akka.net is there a a way to get or create actor

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?

Upvotes: 6

Views: 3036

Answers (1)

Bartosz Sypytkowski
Bartosz Sypytkowski

Reputation: 7542

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);

Upvotes: 14

Related Questions