Package akka.dispatch
Class BalancingDispatcher
- java.lang.Object
-
- akka.dispatch.MessageDispatcher
-
- akka.dispatch.Dispatcher
-
- akka.dispatch.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: UseBalancingPool
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 thelookup
method inDispatchers
.- See Also:
BalancingDispatcher
,Dispatchers
-
-
Constructor Summary
Constructors Constructor Description 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 Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected Mailbox
createMailbox(Cell actor, MailboxType mailboxType)
Deprecated.INTERNAL APIprotected void
dispatch(ActorCell receiver, Envelope invocation)
Deprecated.INTERNAL APIMessageQueue
messageQueue()
Deprecated.INTERNAL APIprotected void
register(ActorCell actor)
Deprecated.If you override it, you must call it.java.util.concurrent.ConcurrentSkipListSet<ActorCell>
team()
Deprecated.INTERNAL APIprotected void
teamWork()
Deprecated.protected void
unregister(ActorCell actor)
Deprecated.If you override it, you must call it.-
Methods inherited from class akka.dispatch.Dispatcher
executeTask, executorService, id, registerForExecution, shutdown, shutdownTimeout, systemDispatch, throughput, throughputDeadlineTime, toString
-
Methods inherited from class akka.dispatch.MessageDispatcher
actors, attach, configurator, debug, detach, eventStream, inhabitants, isThroughputDeadlineTimeDefined, mailboxes, printActors, reportFailure, RESCHEDULED, resubmitOnBlock, resume, SCHEDULED, suspend, unbatchedExecute, UNSCHEDULED
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface akka.dispatch.BatchingExecutor
batchable, execute
-
-
-
-
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
-
createMailbox
protected Mailbox createMailbox(Cell actor, MailboxType mailboxType)
Deprecated.Description copied from class:Dispatcher
INTERNAL API- Overrides:
createMailbox
in classDispatcher
-
dispatch
protected void dispatch(ActorCell receiver, Envelope invocation)
Deprecated.Description copied from class:Dispatcher
INTERNAL API- Overrides:
dispatch
in classDispatcher
-
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 classMessageDispatcher
-
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 invocationINTERNAL API
- Overrides:
unregister
in classMessageDispatcher
-
-