akka.actor
Class AbstractActorWithStash
java.lang.Object
akka.actor.AbstractActor
akka.actor.AbstractActorWithStash
- All Implemented Interfaces:
- Actor, Stash, StashSupport, UnrestrictedStash, RequiresMessageQueue<DequeBasedMessageQueueSemantics>
public abstract class AbstractActorWithStash
- extends AbstractActor
- implements Stash
Java API: compatible with lambda expressions
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 AbstractActorWithStash {
int count = 0;
public MyActorWithStash() {
receive(ReceiveBuilder. match(String.class, s -> {
if (count < 0) {
sender().tell(new Integer(s.length()), self());
} else if (count == 2) {
count = -1;
unstashAll();
} else {
count += 1;
stash();
}}).build()
);
}
}
Note that the subclasses of AbstractActorWithStash
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 AbstractActorWithUnboundedStash
.
There is also an unrestricted version AbstractActorWithUnrestrictedStash
that does not
enforce the mailbox type.
This is an EXPERIMENTAL feature and is subject to change until it has received more real world testing.
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 |
AbstractActorWithStash
public AbstractActorWithStash()