|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object akka.actor.ActorRef
public abstract class ActorRef
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.
Constructor Summary | |
---|---|
ActorRef()
|
Method Summary | |
---|---|
int |
compareTo(ActorRef other)
Comparison only takes address into account. |
boolean |
equals(java.lang.Object that)
|
void |
forward(java.lang.Object message,
ActorContext context)
Forwards the message and passes the original sender actor as the sender. |
int |
hashCode()
|
abstract boolean |
isTerminated()
Is the actor shut down? |
abstract ActorPath |
path()
Returns the path for this actor (from this actor up to the root actor). |
void |
tell(java.lang.Object msg)
Sends the specified message to the sender, i.e. fire-and-forget semantics. |
void |
tell(java.lang.Object msg,
ActorRef sender)
Java API: Sends the specified message to the sender, i.e. fire-and-forget semantics, including the sender reference if possible (pass null if
there is nobody to reply to). |
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public ActorRef()
Method Detail |
---|
public abstract ActorPath path()
public final int compareTo(ActorRef other)
compareTo
in interface java.lang.Comparable<ActorRef>
public final void tell(java.lang.Object msg)
actor.tell(message);
public final void tell(java.lang.Object msg, ActorRef sender)
null
if
there is nobody to reply to).
actor.tell(message, context);
public void forward(java.lang.Object message, ActorContext context)
Works with '!' and '?'/'ask'.
public abstract boolean isTerminated()
public final int hashCode()
hashCode
in class java.lang.Object
public final boolean equals(java.lang.Object that)
equals
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |