akka.actor
Class UntypedActorWithStash
java.lang.Object
akka.actor.UntypedActor
akka.actor.UntypedActorWithStash
- All Implemented Interfaces:
- Actor, Stash, StashSupport, UnrestrictedStash, RequiresMessageQueue<DequeBasedMessageQueueSemantics>
public abstract class UntypedActorWithStash
- extends UntypedActor
- implements Stash
Actor base class that should be extended to create an actor with a stash.
The stash enables an actor to temporarily stash away messages that can not or
should not be handled using the actor's current behavior.
Example:
public class MyActorWithStash extends UntypedActorWithStash {
int count = 0;
public void onReceive(Object msg) {
if (msg instanceof String) {
if (count < 0) {
getSender().tell(new Integer(((String) msg).length()), getSelf());
} else if (count == 2) {
count = -1;
unstashAll();
} else {
count += 1;
stash();
}
}
}
}
Note that the subclasses of UntypedActorWithStash
by default request a Deque based mailbox since this class
implements the RequiresMessageQueue
marker interface.
You can override the default mailbox provided when DequeBasedMessageQueueSemantics
are requested via config:
akka.actor.mailbox.requirements {
"akka.dispatch.BoundedDequeBasedMessageQueueSemantics" = your-custom-mailbox
}
Alternatively, you can add your own requirement marker to the actor and configure a mailbox type to be used
for your marker.
For a Stash
based actor that enforces unbounded deques see UntypedActorWithUnboundedStash
.
There is also an unrestricted version UntypedActorWithUnrestrictedStash
that does not
enforce the mailbox type.
Methods inherited from class akka.actor.UntypedActor |
getContext, getSelf, getSender, onReceive, postRestart, postStop, preRestart, preStart, receive, supervisorStrategy, unhandled |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface akka.actor.Actor |
aroundPostRestart, aroundPostStop, aroundPreRestart, aroundPreStart, aroundReceive, context, postRestart, preStart, receive, self, sender, supervisorStrategy, unhandled |
Methods inherited from interface akka.actor.StashSupport |
actorCell, capacity, clearStash, context, enqueueFirst, mailbox, prepend, self, stash, theStash, unstash, unstashAll, unstashAll |
UntypedActorWithStash
public UntypedActorWithStash()