package dispatch
- Alphabetic
- Public
- Protected
Type Members
- abstract class AbstractBoundedNodeQueue[T] extends AnyRef
Lock-free bounded non-blocking multiple-producer single-consumer queue based on the works of:
Lock-free bounded non-blocking multiple-producer single-consumer queue based on the works of:
Andriy Plokhotnuyk (https://github.com/plokhotnyuk)
- https://github.com/plokhotnyuk/actors/blob/2e65abb7ce4cbfcb1b29c98ee99303d6ced6b01f/src/test/scala/akka/dispatch/Mailboxes.scala (Apache V2: https://github.com/plokhotnyuk/actors/blob/master/LICENSE)
Dmitriy Vyukov's non-intrusive MPSC queue:
- https://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue (Simplified BSD)
- Annotations
- @SuppressWarnings()
- abstract class AbstractNodeQueue[T] extends AtomicReference[Node[T]]
Lock-free MPSC linked queue implementation based on Dmitriy Vyukov's non-intrusive MPSC queue: https://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue
Lock-free MPSC linked queue implementation based on Dmitriy Vyukov's non-intrusive MPSC queue: https://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue
This queue could be wait-free (i.e. without the spinning loops in peekNode and pollNode) if it were permitted to return null while the queue is not quite empty anymore but the enqueued element is not yet visible. This would break actor scheduling, though.
- Annotations
- @SuppressWarnings()
- class BalancingDispatcherConfigurator extends MessageDispatcherConfigurator
Configurator for creating pekko.dispatch.BalancingDispatcher.
Configurator for creating pekko.dispatch.BalancingDispatcher. Returns the same dispatcher instance for each invocation of the
dispatcher()
method.- Annotations
- @nowarn()
- final case class BoundedControlAwareMailbox(capacity: Int, pushTimeOut: FiniteDuration) extends MailboxType with ProducesMessageQueue[dispatch.BoundedControlAwareMailbox.MessageQueue] with ProducesPushTimeoutSemanticsMailbox with Product with Serializable
BoundedControlAwareMailbox is a bounded MailboxType, that maintains two queues to allow messages that extend pekko.dispatch.ControlMessage to be delivered with priority.
- trait BoundedControlAwareMessageQueueSemantics extends BoundedMessageQueueSemantics with ControlAwareMessageQueueSemantics
- case class BoundedDequeBasedMailbox(capacity: Int, pushTimeOut: FiniteDuration) extends MailboxType with ProducesMessageQueue[dispatch.BoundedDequeBasedMailbox.MessageQueue] with ProducesPushTimeoutSemanticsMailbox with Product with Serializable
BoundedDequeBasedMailbox is an bounded MailboxType, backed by a Deque.
- trait BoundedDequeBasedMessageQueue extends DequeBasedMessageQueue with BoundedDequeBasedMessageQueueSemantics
BoundedMessageQueueSemantics adds bounded semantics to a DequeBasedMessageQueue, i.e.
BoundedMessageQueueSemantics adds bounded semantics to a DequeBasedMessageQueue, i.e. blocking enqueue with timeout.
- trait BoundedDequeBasedMessageQueueSemantics extends DequeBasedMessageQueueSemantics with BoundedMessageQueueSemantics
- final case class BoundedMailbox(capacity: Int, pushTimeOut: FiniteDuration) extends MailboxType with ProducesMessageQueue[dispatch.BoundedMailbox.MessageQueue] with ProducesPushTimeoutSemanticsMailbox with Product with Serializable
BoundedMailbox is the default bounded MailboxType used by Pekko Actors.
- trait BoundedMessageQueueSemantics extends AnyRef
BoundedMessageQueueSemantics adds bounded semantics to a QueueBasedMessageQueue, i.e.
BoundedMessageQueueSemantics adds bounded semantics to a QueueBasedMessageQueue, i.e. blocking enqueue with timeout.
- class BoundedNodeMessageQueue extends AbstractBoundedNodeQueue[Envelope] with MessageQueue with BoundedMessageQueueSemantics with MultipleConsumerSemantics
Lock-free bounded non-blocking multiple-producer single-consumer queue.
Lock-free bounded non-blocking multiple-producer single-consumer queue. Discards overflowing messages into DeadLetters.
- class BoundedPriorityMailbox extends MailboxType with ProducesMessageQueue[dispatch.BoundedPriorityMailbox.MessageQueue] with ProducesPushTimeoutSemanticsMailbox
BoundedPriorityMailbox is a bounded mailbox that allows for prioritization of its contents.
BoundedPriorityMailbox is a bounded mailbox that allows for prioritization of its contents. Extend this class and provide the Comparator in the constructor.
- trait BoundedQueueBasedMessageQueue extends QueueBasedMessageQueue with BoundedMessageQueueSemantics
- class BoundedStablePriorityMailbox extends MailboxType with ProducesMessageQueue[dispatch.BoundedStablePriorityMailbox.MessageQueue] with ProducesPushTimeoutSemanticsMailbox
BoundedStablePriorityMailbox is a bounded mailbox that allows for prioritization of its contents.
BoundedStablePriorityMailbox is a bounded mailbox that allows for prioritization of its contents. Unlike the BoundedPriorityMailbox it preserves ordering for messages of equal priority. Extend this class and provide the Comparator in the constructor.
- trait ControlAwareMessageQueueSemantics extends QueueBasedMessageQueue
ControlAwareMessageQueue handles messages that extend pekko.dispatch.ControlMessage with priority.
- trait ControlMessage extends AnyRef
Messages that extend this trait will be handled with priority by control aware mailboxes.
- class DefaultExecutorServiceConfigurator extends ExecutorServiceConfigurator
- trait DequeBasedMessageQueue extends QueueBasedMessageQueue with DequeBasedMessageQueueSemantics
- trait DequeBasedMessageQueueSemantics extends AnyRef
DequeBasedMessageQueue refines QueueBasedMessageQueue to be backed by a java.util.Deque.
- class Dispatcher extends MessageDispatcher
The event-based
binds a set of Actors to a thread pool backed up by aDispatcher
BlockingQueue
.The event-based
binds a set of Actors to a thread pool backed up by aDispatcher
BlockingQueue
.The preferred way of creating dispatchers is to define configuration of it and use the the
lookup
method in pekko.dispatch.Dispatchers. - class DispatcherConfigurator extends MessageDispatcherConfigurator
Configurator for creating pekko.dispatch.Dispatcher.
Configurator for creating pekko.dispatch.Dispatcher. Returns the same dispatcher instance for each invocation of the
dispatcher()
method. - trait DispatcherPrerequisites extends AnyRef
DispatcherPrerequisites represents useful contextual pieces when constructing a MessageDispatcher
- class Dispatchers extends AnyRef
Dispatchers are to be defined in configuration to allow for tuning for different environments.
Dispatchers are to be defined in configuration to allow for tuning for different environments. Use the
lookup
method to create a dispatcher as specified in configuration.A dispatcher config can also be an alias, in that case it is a config string value pointing to the actual dispatcher config.
Look in
pekko.actor.default-dispatcher
section of the reference.conf for documentation of dispatcher options.Not for user instantiation or extension
- Annotations
- @DoNotInherit()
- final case class Envelope extends Product with Serializable
- abstract class ExecutorServiceConfigurator extends ExecutorServiceFactoryProvider
An ExecutorServiceConfigurator is a class that given some prerequisites and a configuration can create instances of ExecutorService
- trait ExecutorServiceDelegate extends ExecutorService
As the name says
- trait ExecutorServiceFactory extends AnyRef
Function0 without the fun stuff (mostly for the sake of the Java API side of things)
- trait ExecutorServiceFactoryProvider extends AnyRef
Generic way to specify an ExecutorService to a Dispatcher, create it with the given name if desired
- abstract class Foreach[-T] extends UnitFunctionBridge[T]
Callback for the Future.foreach operation that will be invoked if the Future that this callback is registered on becomes completed with a success.
Callback for the Future.foreach operation that will be invoked if the Future that this callback is registered on becomes completed with a success. This method is essentially the same operation as onSuccess.
SAM (Single Abstract Method) class Java API
- Annotations
- @nowarn()
- class ForkJoinExecutorConfigurator extends ExecutorServiceConfigurator
- trait MailboxType extends AnyRef
MailboxType is a factory to create MessageQueues for an optionally provided ActorContext.
MailboxType is a factory to create MessageQueues for an optionally provided ActorContext.
Possibly Important Notice
When implementing a custom mailbox type, be aware that there is special semantics attached to
system.actorOf()
in that sending to the returned ActorRef may—for a short period of time—enqueue the messages first in a dummy queue. Top-level actors are created in two steps, and only after the guardian actor has performed that second step will all previously sent messages be transferred from the dummy queue into the real mailbox. - abstract class Mapper[-T, +R] extends AbstractFunction1[T, R]
Callback for the Future.map and Future.flatMap operations that will be invoked if the Future that this callback is registered on becomes completed with a success.
Callback for the Future.map and Future.flatMap operations that will be invoked if the Future that this callback is registered on becomes completed with a success. This callback is the equivalent of an org.apache.pekko.japi.Function
Override "apply" normally, or "checkedApply" if you need to throw checked exceptions.
SAM (Single Abstract Method) class
Java API
- abstract class MessageDispatcher extends AbstractMessageDispatcher with BatchingExecutor with ExecutionContextExecutor
- abstract class MessageDispatcherConfigurator extends AnyRef
Base class to be used for hooking in new dispatchers into Dispatchers.
- trait MessageQueue extends AnyRef
A MessageQueue is one of the core components in forming an Akka Mailbox.
A MessageQueue is one of the core components in forming an Akka Mailbox. The MessageQueue is where the normal messages that are sent to Actors will be enqueued (and subsequently dequeued) It needs to at least support N producers and 1 consumer thread-safely.
- final case class MonitorableThreadFactory(name: String, daemonic: Boolean, contextClassLoader: Option[ClassLoader], exceptionHandler: UncaughtExceptionHandler = MonitorableThreadFactory.doNothing, counter: AtomicLong = new AtomicLong) extends ThreadFactory with ForkJoinWorkerThreadFactory with Product with Serializable
- trait MultipleConsumerSemantics extends AnyRef
This is a marker trait for message queues which support multiple consumers, as is required by the BalancingDispatcher.
- class NodeMessageQueue extends AbstractNodeQueue[Envelope] with MessageQueue with UnboundedMessageQueueSemantics
- case class NonBlockingBoundedMailbox(capacity: Int) extends MailboxType with ProducesMessageQueue[BoundedNodeMessageQueue] with Product with Serializable
NonBlockingBoundedMailbox is a high-performance, multiple-producer single-consumer, bounded MailboxType, Noteworthy is that it discards overflow as DeadLetters.
NonBlockingBoundedMailbox is a high-performance, multiple-producer single-consumer, bounded MailboxType, Noteworthy is that it discards overflow as DeadLetters.
It can't have multiple consumers, which rules out using it with BalancingPool (BalancingDispatcher) for instance.
NOTE: NonBlockingBoundedMailbox does not use
mailbox-push-timeout-time
as it is non-blocking. - abstract class OnComplete[-T] extends CallbackBridge[Try[T]]
Callback for when a Future is completed with either failure or a success SAM (Single Abstract Method) class
Callback for when a Future is completed with either failure or a success SAM (Single Abstract Method) class
Java API
- Annotations
- @nowarn()
- abstract class OnFailure extends CallbackBridge[Throwable]
Callback for when a Future is completed with a failure SAM (Single Abstract Method) class
Callback for when a Future is completed with a failure SAM (Single Abstract Method) class
Java API
- Annotations
- @nowarn()
- abstract class OnSuccess[-T] extends CallbackBridge[T]
Callback for when a Future is completed successfully SAM (Single Abstract Method) class
Callback for when a Future is completed successfully SAM (Single Abstract Method) class
Java API
- Annotations
- @nowarn()
- class PinnedDispatcher extends Dispatcher
Dedicates a unique thread for each actor passed in as reference.
Dedicates a unique thread for each actor passed in as reference. Served through its messageQueue.
The preferred way of creating dispatchers is to define configuration of it and use the the
lookup
method in pekko.dispatch.Dispatchers. - class PinnedDispatcherConfigurator extends MessageDispatcherConfigurator
Configurator for creating pekko.dispatch.PinnedDispatcher.
Configurator for creating pekko.dispatch.PinnedDispatcher. Returns new dispatcher instance for each invocation of the
dispatcher()
method. - abstract class PriorityGenerator extends Comparator[Envelope]
A PriorityGenerator is a convenience API to create a Comparator that orders the messages of a PriorityDispatcher
- trait ProducesMessageQueue[T <: MessageQueue] extends AnyRef
- trait QueueBasedMessageQueue extends MessageQueue with MultipleConsumerSemantics
A QueueBasedMessageQueue is a MessageQueue backed by a java.util.Queue.
- abstract class Recover[+T] extends RecoverBridge[T]
Callback for the Future.recover operation that conditionally turns failures into successes.
Callback for the Future.recover operation that conditionally turns failures into successes.
SAM (Single Abstract Method) class
Java API
- Annotations
- @nowarn()
- trait RequiresMessageQueue[T] extends AnyRef
Trait to signal that an Actor requires a certain type of message queue semantics.
Trait to signal that an Actor requires a certain type of message queue semantics.
The mailbox type will be looked up by mapping the type T via pekko.actor.mailbox.requirements in the config, to a mailbox configuration. If no mailbox is assigned on Props or in deployment config then this one will be used.
The queue type of the created mailbox will be checked against the type T and actor creation will fail if it doesn't fulfill the requirements.
- class SaneRejectedExecutionHandler extends RejectedExecutionHandler
The RejectedExecutionHandler used by Akka, it improves on CallerRunsPolicy by throwing a RejectedExecutionException if the executor isShutdown.
The RejectedExecutionHandler used by Akka, it improves on CallerRunsPolicy by throwing a RejectedExecutionException if the executor isShutdown. (CallerRunsPolicy silently discards the runnable in this case, which is arguably broken)
- final case class SingleConsumerOnlyUnboundedMailbox() extends MailboxType with ProducesMessageQueue[NodeMessageQueue] with Product with Serializable
SingleConsumerOnlyUnboundedMailbox is a high-performance, multiple producer—single consumer, unbounded MailboxType, with the drawback that you can't have multiple consumers, which rules out using it with BalancingPool (BalancingDispatcher) for instance.
SingleConsumerOnlyUnboundedMailbox is a high-performance, multiple producer—single consumer, unbounded MailboxType, with the drawback that you can't have multiple consumers, which rules out using it with BalancingPool (BalancingDispatcher) for instance.
Currently this queue is slower for some benchmarks than the ConcurrentLinkedQueue from JDK 8 that is used by default, so be sure to measure the performance in your particular setting in order to determine which one to use.
- final case class TaskInvocation(eventStream: EventStream, runnable: Runnable, cleanup: () => Unit) extends Batchable with Product with Serializable
- final case class ThreadPoolConfig(allowCorePoolTimeout: Boolean = ThreadPoolConfig.defaultAllowCoreThreadTimeout, corePoolSize: Int = ThreadPoolConfig.defaultCorePoolSize, maxPoolSize: Int = ThreadPoolConfig.defaultMaxPoolSize, threadTimeout: Duration = ThreadPoolConfig.defaultTimeout, queueFactory: QueueFactory = ThreadPoolConfig.linkedBlockingQueue(), rejectionPolicy: RejectedExecutionHandler = ThreadPoolConfig.defaultRejectionPolicy) extends ExecutorServiceFactoryProvider with Product with Serializable
A small configuration DSL to create ThreadPoolExecutors that can be provided as an ExecutorServiceFactoryProvider to Dispatcher
- final case class ThreadPoolConfigBuilder(config: ThreadPoolConfig) extends Product with Serializable
A DSL to configure and create a MessageDispatcher with a ThreadPoolExecutor
- class ThreadPoolExecutorConfigurator extends ExecutorServiceConfigurator
- final case class UnboundedControlAwareMailbox() extends MailboxType with ProducesMessageQueue[dispatch.UnboundedControlAwareMailbox.MessageQueue] with Product with Serializable
UnboundedControlAwareMailbox is an unbounded MailboxType, that maintains two queues to allow messages that extend pekko.dispatch.ControlMessage to be delivered with priority.
- trait UnboundedControlAwareMessageQueueSemantics extends UnboundedMessageQueueSemantics with ControlAwareMessageQueueSemantics
- final case class UnboundedDequeBasedMailbox() extends MailboxType with ProducesMessageQueue[dispatch.UnboundedDequeBasedMailbox.MessageQueue] with Product with Serializable
UnboundedDequeBasedMailbox is an unbounded MailboxType, backed by a Deque.
- trait UnboundedDequeBasedMessageQueue extends DequeBasedMessageQueue with UnboundedDequeBasedMessageQueueSemantics
UnboundedDequeBasedMessageQueueSemantics adds unbounded semantics to a DequeBasedMessageQueue, i.e.
UnboundedDequeBasedMessageQueueSemantics adds unbounded semantics to a DequeBasedMessageQueue, i.e. a non-blocking enqueue and dequeue.
- trait UnboundedDequeBasedMessageQueueSemantics extends DequeBasedMessageQueueSemantics with UnboundedMessageQueueSemantics
- final case class UnboundedMailbox() extends MailboxType with ProducesMessageQueue[dispatch.UnboundedMailbox.MessageQueue] with Product with Serializable
UnboundedMailbox is the default unbounded MailboxType used by Pekko Actors.
- trait UnboundedMessageQueueSemantics extends AnyRef
UnboundedMessageQueueSemantics adds unbounded semantics to a QueueBasedMessageQueue, i.e.
UnboundedMessageQueueSemantics adds unbounded semantics to a QueueBasedMessageQueue, i.e. a non-blocking enqueue and dequeue.
- class UnboundedPriorityMailbox extends MailboxType with ProducesMessageQueue[dispatch.UnboundedPriorityMailbox.MessageQueue]
UnboundedPriorityMailbox is an unbounded mailbox that allows for prioritization of its contents.
UnboundedPriorityMailbox is an unbounded mailbox that allows for prioritization of its contents. Extend this class and provide the Comparator in the constructor.
- trait UnboundedQueueBasedMessageQueue extends QueueBasedMessageQueue with UnboundedMessageQueueSemantics
- class UnboundedStablePriorityMailbox extends MailboxType with ProducesMessageQueue[dispatch.UnboundedStablePriorityMailbox.MessageQueue]
UnboundedStablePriorityMailbox is an unbounded mailbox that allows for prioritization of its contents.
UnboundedStablePriorityMailbox is an unbounded mailbox that allows for prioritization of its contents. Unlike the UnboundedPriorityMailbox it preserves ordering for messages of equal priority. Extend this class and provide the Comparator in the constructor.
- final class VirtualThreadExecutorConfigurator extends ExecutorServiceConfigurator
Value Members
- object BoundedControlAwareMailbox extends Serializable
- object BoundedDequeBasedMailbox extends Serializable
- object BoundedMailbox extends Serializable
- object BoundedPriorityMailbox
- object BoundedStablePriorityMailbox
- object Dispatchers
- object Envelope extends Serializable
- object ExecutionContexts
ExecutionContexts is the Java API for ExecutionContexts
- object Filter
Java API (not recommended): Callback for the Future.filter operation that creates a new Future which will conditionally contain the success of another Future.
Java API (not recommended): Callback for the Future.filter operation that creates a new Future which will conditionally contain the success of another Future.
Unfortunately it is not possible to express the type of a Scala filter in Java: Function1[T, Boolean], where “Boolean” is the primitive type. It is possible to use
Future.filter
by constructing such a function indirectly:import static org.apache.pekko.dispatch.Filter.filterOf; Future<String> f = ...; f.filter(filterOf(new Function<String, Boolean>() { @Override public Boolean apply(String s) { ... } }));
However,
Future.filter
exists mainly to support Scala’s for-comprehensions, thus Java users should preferFuture.map
, translating non-matching values to failure cases. - object ForkJoinExecutorConfigurator
- object Futures
Futures is the Java API for Futures and Promises
- object Mailboxes
- object MonitorableThreadFactory extends Serializable
- object PriorityGenerator
- object ThreadPoolConfig extends Serializable
- object UnboundedControlAwareMailbox extends Serializable
- object UnboundedDequeBasedMailbox extends Serializable
- object UnboundedMailbox extends Serializable
- object UnboundedPriorityMailbox
- object UnboundedStablePriorityMailbox
- object japi
This class contains bridge classes between Scala and Java.
This class contains bridge classes between Scala and Java. Internal use only.