Package akka.dispatch

Class BalancingDispatcher

  • All Implemented Interfaces:
    BatchingExecutor, java.util.concurrent.Executor, scala.concurrent.ExecutionContext, scala.concurrent.ExecutionContextExecutor

    public class BalancingDispatcher
    extends Dispatcher
    Deprecated.
    Use BalancingPool instead of BalancingDispatcher. Since 2.3.
    INTERNAL API: Use BalancingPool instead of this dispatcher directly.

    An executor based event driven dispatcher which will try to redistribute work from busy actors to idle actors. It is assumed that all actors using the same instance of this dispatcher can process all messages that have been sent to one of the actors. I.e. the actors belong to a pool of actors, and to the client there is no guarantee about which actor instance actually processes a given message.

    Although the technique used in this implementation is commonly known as "work stealing", the actual implementation is probably best described as "work donating" because the actor of which work is being stolen takes the initiative.

    The preferred way of creating dispatchers is to define configuration of it and use the the lookup method in Dispatchers.

    See Also:
    BalancingDispatcher, Dispatchers
    • Constructor Detail

      • BalancingDispatcher

        public BalancingDispatcher​(MessageDispatcherConfigurator _configurator,
                                   java.lang.String _id,
                                   int throughput,
                                   scala.concurrent.duration.Duration throughputDeadlineTime,
                                   MailboxType _mailboxType,
                                   ExecutorServiceFactoryProvider _executorServiceFactoryProvider,
                                   scala.concurrent.duration.FiniteDuration _shutdownTimeout,
                                   boolean attemptTeamWork)
        Deprecated.
    • Method Detail

      • messageQueue

        public MessageQueue messageQueue()
        Deprecated.
        INTERNAL API
      • register

        protected void register​(ActorCell actor)
        Deprecated.
        Description copied from class: MessageDispatcher
        If you override it, you must call it. But only ever once. See "attach" for only invocation.

        INTERNAL API

        Overrides:
        register in class MessageDispatcher
      • team

        public java.util.concurrent.ConcurrentSkipListSet<ActorCell> team()
        Deprecated.
        INTERNAL API
      • teamWork

        protected void teamWork()
        Deprecated.
      • unregister

        protected void unregister​(ActorCell actor)
        Deprecated.
        Description copied from class: MessageDispatcher
        If you override it, you must call it. But only ever once. See "detach" for the only invocation

        INTERNAL API

        Overrides:
        unregister in class MessageDispatcher