Class MessageDispatcher

  • All Implemented Interfaces:
    java.util.concurrent.Executor, BatchingExecutor, scala.concurrent.ExecutionContext, scala.concurrent.ExecutionContextExecutor
    Direct Known Subclasses:
    CallingThreadDispatcher, Dispatcher

    public abstract class MessageDispatcher
    extends java.lang.Object
    implements BatchingExecutor, scala.concurrent.ExecutionContextExecutor
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface scala.concurrent.ExecutionContext

        scala.concurrent.ExecutionContext.Implicits$, scala.concurrent.ExecutionContext.parasitic$
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      static Index<MessageDispatcher,​ActorRef> actors()  
      void attach​(org.apache.pekko.actor.ActorCell actor)
      Attaches the specified actor instance to this dispatcher, which includes scheduling it to run for the first time (Create() is expected to have been enqueued by the ActorCell upon mailbox creation).
      MessageDispatcherConfigurator configurator()  
      protected abstract org.apache.pekko.dispatch.Mailbox createMailbox​(Cell actor, MailboxType mailboxType)
      Creates and returns a mailbox for the given actor.
      static boolean debug()  
      void detach​(org.apache.pekko.actor.ActorCell actor)
      Detaches the specified actor instance from this dispatcher
      protected abstract void dispatch​(org.apache.pekko.actor.ActorCell receiver, Envelope invocation)
      Will be called when the dispatcher is to queue an invocation for execution
      EventStream eventStream()  
      protected abstract void executeTask​(TaskInvocation invocation)
      INTERNAL API
      abstract java.lang.String id()
      Identifier of this dispatcher, corresponds to the full key of the dispatcher configuration.
      long inhabitants()  
      protected boolean isThroughputDeadlineTimeDefined()
      INTERNAL API
      org.apache.pekko.dispatch.Mailboxes mailboxes()  
      static void printActors()  
      protected void register​(org.apache.pekko.actor.ActorCell actor)
      If you override it, you must call it.
      protected abstract boolean registerForExecution​(org.apache.pekko.dispatch.Mailbox mbox, boolean hasMessageHint, boolean hasSystemMessageHint)
      Suggest to register the provided mailbox for execution
      void reportFailure​(java.lang.Throwable t)  
      static int RESCHEDULED()  
      protected boolean resubmitOnBlock()  
      protected void resume​(org.apache.pekko.actor.ActorCell actor)
      After the call to this method, the dispatcher must begin any new message processing for the specified reference
      static int SCHEDULED()  
      protected abstract void shutdown()
      Called one time every time an actor is detached from this dispatcher and this dispatcher has no actors left attached Must be idempotent
      protected abstract scala.concurrent.duration.FiniteDuration shutdownTimeout()
      When the dispatcher no longer has any actors registered, how long will it wait until it shuts itself down, defaulting to your pekko configs "pekko.actor.default-dispatcher.shutdown-timeout" or default specified in reference.conf
      protected void suspend​(org.apache.pekko.actor.ActorCell actor)
      After the call to this method, the dispatcher mustn't begin any new message processing for the specified reference
      protected abstract void systemDispatch​(org.apache.pekko.actor.ActorCell receiver, SystemMessage invocation)
      Will be called when the dispatcher is to queue an invocation for execution
      protected abstract int throughput()
      INTERNAL API
      protected abstract scala.concurrent.duration.Duration throughputDeadlineTime()
      INTERNAL API
      protected void unbatchedExecute​(java.lang.Runnable r)  
      protected void unregister​(org.apache.pekko.actor.ActorCell actor)
      If you override it, you must call it.
      static int UNSCHEDULED()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface scala.concurrent.ExecutionContext

        execute, prepare
    • Method Detail

      • UNSCHEDULED

        public static int UNSCHEDULED()
      • SCHEDULED

        public static int SCHEDULED()
      • RESCHEDULED

        public static int RESCHEDULED()
      • debug

        public static final boolean debug()
      • printActors

        public static void printActors()
      • mailboxes

        public org.apache.pekko.dispatch.Mailboxes mailboxes()
      • inhabitants

        public final long inhabitants()
      • createMailbox

        protected abstract org.apache.pekko.dispatch.Mailbox createMailbox​(Cell actor,
                                                                           MailboxType mailboxType)
        Creates and returns a mailbox for the given actor.
      • id

        public abstract java.lang.String id()
        Identifier of this dispatcher, corresponds to the full key of the dispatcher configuration.
      • attach

        public final void attach​(org.apache.pekko.actor.ActorCell actor)
        Attaches the specified actor instance to this dispatcher, which includes scheduling it to run for the first time (Create() is expected to have been enqueued by the ActorCell upon mailbox creation).
      • detach

        public final void detach​(org.apache.pekko.actor.ActorCell actor)
        Detaches the specified actor instance from this dispatcher
      • reportFailure

        public void reportFailure​(java.lang.Throwable t)
        Specified by:
        reportFailure in interface scala.concurrent.ExecutionContext
      • register

        protected void register​(org.apache.pekko.actor.ActorCell actor)
        If you override it, you must call it. But only ever once. See "attach" for only invocation.

        INTERNAL API

      • unregister

        protected void unregister​(org.apache.pekko.actor.ActorCell actor)
        If you override it, you must call it. But only ever once. See "detach" for the only invocation

        INTERNAL API

      • shutdownTimeout

        protected abstract scala.concurrent.duration.FiniteDuration shutdownTimeout()
        When the dispatcher no longer has any actors registered, how long will it wait until it shuts itself down, defaulting to your pekko configs "pekko.actor.default-dispatcher.shutdown-timeout" or default specified in reference.conf

        INTERNAL API

      • suspend

        protected void suspend​(org.apache.pekko.actor.ActorCell actor)
        After the call to this method, the dispatcher mustn't begin any new message processing for the specified reference
      • resume

        protected void resume​(org.apache.pekko.actor.ActorCell actor)
        After the call to this method, the dispatcher must begin any new message processing for the specified reference
      • systemDispatch

        protected abstract void systemDispatch​(org.apache.pekko.actor.ActorCell receiver,
                                               SystemMessage invocation)
        Will be called when the dispatcher is to queue an invocation for execution

        INTERNAL API

      • dispatch

        protected abstract void dispatch​(org.apache.pekko.actor.ActorCell receiver,
                                         Envelope invocation)
        Will be called when the dispatcher is to queue an invocation for execution

        INTERNAL API

      • registerForExecution

        protected abstract boolean registerForExecution​(org.apache.pekko.dispatch.Mailbox mbox,
                                                        boolean hasMessageHint,
                                                        boolean hasSystemMessageHint)
        Suggest to register the provided mailbox for execution

        INTERNAL API

      • throughput

        protected abstract int throughput()
        INTERNAL API
      • throughputDeadlineTime

        protected abstract scala.concurrent.duration.Duration throughputDeadlineTime()
        INTERNAL API
      • isThroughputDeadlineTimeDefined

        protected final boolean isThroughputDeadlineTimeDefined()
        INTERNAL API
      • executeTask

        protected abstract void executeTask​(TaskInvocation invocation)
        INTERNAL API
      • shutdown

        protected abstract void shutdown()
        Called one time every time an actor is detached from this dispatcher and this dispatcher has no actors left attached Must be idempotent

        INTERNAL API