Is the actor shut down? The contract is that if this method returns true, then it will never be false again.
Is the actor shut down? The contract is that if this method returns true, then it will never be false again. But you cannot rely on that it is alive if it returns true, since this by nature is a racy method.
Returns the path for this actor (from this actor up to the root actor).
Returns the path for this actor (from this actor up to the root actor).
Comparison only takes address into account.
Comparison only takes address into account.
Forwards the message and passes the original sender actor as the sender.
Forwards the message and passes the original sender actor as the sender.
Works with '!' and '?'/'ask'.
Java API.
Java API.
Sends the specified message to the sender, i.e. fire-and-forget semantics, including the sender reference if possible (not supported on all senders).
actor.tell(message, context);
Sends the specified message to the sender, i.
Sends the specified message to the sender, i.e. fire-and-forget semantics.
actor.tell(message);
Immutable and serializable handle to an actor, which may or may not reside on the local host or inside the same ActorSystem. An ActorRef can be obtained from an ActorRefFactory, an interface which is implemented by ActorSystem and ActorContext. This means actors can be created top-level in the ActorSystem or as children of an existing actor, but only from within that actor.
ActorRefs can be freely shared among actors by message passing. Message passing conversely is their only purpose, as demonstrated in the following examples:
Scala:
class ExampleActor extends Actor { val other = context.actorOf(Props[OtherActor], "childName") // will be destroyed and re-created upon restart by default def receive { case Request1(msg) => other ! refine(msg) // uses this actor as sender reference, reply goes to us case Request2(msg) => other.tell(msg, sender) // forward sender reference, enabling direct reply case Request3(msg) => sender ! (other ? msg) // will reply with a Future for holding other’s reply (implicit timeout from "akka.actor.timeout") } }Java:
public class ExampleActor Extends UntypedActor { // this child will be destroyed and re-created upon restart by default final ActorRef other = getContext().actorOf(new Props(OtherActor.class), "childName"); @Override public void onReceive(Object o) { if (o instanceof Request1) { val msg = ((Request1) o).getMsg(); other.tell(msg); // uses this actor as sender reference, reply goes to us } else if (o instanceof Request2) { val msg = ((Request2) o).getMsg(); other.tell(msg, getSender()); // forward sender reference, enabling direct reply } else if (o instanceof Request3) { val msg = ((Request3) o).getMsg(); getSender().tell(ask(other, msg, 5000)); // reply with Future for holding the other’s reply (timeout 5 seconds) } else { unhandled(o); } } }ActorRef does not have a method for terminating the actor it points to, use ActorRefFactory
.stop(child)for this purpose.