public abstract class AbstractActorWithStash extends AbstractActor 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 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<DequeBasedMessageQueueSemantics>
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.
Actor.emptyBehavior$, Actor.ignoringBehavior$
Constructor and Description |
---|
AbstractActorWithStash() |
Modifier and Type | Method and Description |
---|---|
DequeBasedMessageQueueSemantics |
mailbox() |
akka$actor$Actor$_setter_$context_$eq, akka$actor$Actor$_setter_$self_$eq, aroundPostRestart, aroundPostStop, aroundPreRestart, aroundPreStart, aroundReceive, context, emptyBehavior, getContext, postRestart, postStop, preRestart, preStart, receive, receive, self, sender, supervisorStrategy, unhandled
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
postStop, preRestart
aroundPostRestart, aroundPostStop, aroundPreRestart, aroundPreStart, aroundReceive, context, postRestart, preStart, receive, self, sender, supervisorStrategy, unhandled
actorCell, clearStash, context, enqueueFirst, prepend, self, stash, unstash, unstashAll, unstashAll
public DequeBasedMessageQueueSemantics mailbox()
mailbox
in interface StashSupport