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

     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;
           } else {
             count += 1;
    Note that the subclasses of AbstractActorWithStash by default request a Deque based mailbox since this class implements the RequiresMessageQueue&lt;DequeBasedMessageQueueSemantics&gt; marker interface. You can override the default mailbox provided when DequeBasedMessageQueueSemantics are requested via config: {
         "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.