Package akka.actor

Class UntypedActorWithStash

  • All Implemented Interfaces:
    Actor, Stash, StashSupport, UnrestrictedStash, RequiresMessageQueue<DequeBasedMessageQueueSemantics>

    public abstract class UntypedActorWithStash
    extends UntypedActor
    implements Stash
    Deprecated.
    Use AbstractActorWithStash instead of UntypedActorWithStash. Since 2.5.0.
    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&lt;DequeBasedMessageQueueSemantics&gt; 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.