Class UntypedActorWithStash

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

    public abstract class UntypedActorWithStash
    extends UntypedActor
    implements Stash
    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.

       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;
             } else {
               count += 1;
    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.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.