akka.actor

ActorRef

abstract class ActorRef extends Comparable[ActorRef] with Serializable

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:

import akka.pattern.ask

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:

import static akka.pattern.Patterns.ask;

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.

Self Type
InternalActorRef
Linear Supertypes
Serializable, Serializable, Comparable[ActorRef], AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. ActorRef
  2. Serializable
  3. Serializable
  4. Comparable
  5. AnyRef
  6. Any
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ActorRef()

Abstract Value Members

  1. abstract def isTerminated: Boolean

    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.

  2. abstract def path: ActorPath

    Returns the path for this actor (from this actor up to the root actor).

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  8. final def compareTo(other: ActorRef): Int

    Comparison only takes address into account.

    Comparison only takes address into account.

    Definition Classes
    ActorRef → Comparable
  9. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  10. final def equals(that: Any): Boolean

    Definition Classes
    ActorRef → AnyRef → Any
  11. def finalize(): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  12. def forward(message: Any)(implicit context: ActorContext): Unit

    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'.

  13. final def getClass(): java.lang.Class[_]

    Definition Classes
    AnyRef → Any
  14. final def hashCode(): Int

    Definition Classes
    ActorRef → AnyRef → Any
  15. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  17. final def notify(): Unit

    Definition Classes
    AnyRef
  18. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  19. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  20. final def tell(msg: Any, sender: ActorRef): Unit

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

  21. final def tell(msg: Any): Unit

    Sends the specified message to the sender, i.

    Sends the specified message to the sender, i.e. fire-and-forget semantics.

    actor.tell(message);
    

  22. def toString(): String

    Definition Classes
    ActorRef → AnyRef → Any
  23. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  24. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  25. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()

Inherited from Serializable

Inherited from Serializable

Inherited from Comparable[ActorRef]

Inherited from AnyRef

Inherited from Any