Package org.apache.pekko.dispatch
Class BoundedNodeMessageQueue
java.lang.Object
org.apache.pekko.dispatch.AbstractBoundedNodeQueue<Envelope>
org.apache.pekko.dispatch.BoundedNodeMessageQueue
- All Implemented Interfaces:
BoundedMessageQueueSemantics,MessageQueue,MultipleConsumerSemantics
public class BoundedNodeMessageQueue
extends AbstractBoundedNodeQueue<Envelope>
implements MessageQueue, BoundedMessageQueueSemantics, MultipleConsumerSemantics
Lock-free bounded non-blocking multiple-producer single-consumer queue.
Discards overflowing messages into DeadLetters.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.pekko.dispatch.AbstractBoundedNodeQueue
AbstractBoundedNodeQueue.Node<T> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidcleanUp(ActorRef owner, MessageQueue deadLetters) Called when the mailbox this queue belongs to is disposed of.final Envelopedequeue()Try to dequeue the next message from this queue, return null failing that.final voidTry to enqueue the message to this queue, or throw an exception.final booleanIndicates whether this queue is non-empty.final intShould return the current number of messages held in this queue; may always return 0 if no other value is available efficiently.final scala.concurrent.duration.Duration
-
Constructor Details
-
BoundedNodeMessageQueue
public BoundedNodeMessageQueue(int capacity)
-
-
Method Details
-
cleanUp
Description copied from interface:MessageQueueCalled when the mailbox this queue belongs to is disposed of. Normally it is expected to transfer all remaining messages into the dead letter queue which is passed in. The owner of this MessageQueue is passed in if available (e.g. for creating DeadLetters()), “/deadletters” otherwise.Note that we implement the method in a recursive manner mainly for atomicity (not touching the queue twice).
- Specified by:
cleanUpin interfaceMessageQueue
-
dequeue
Description copied from interface:MessageQueueTry to dequeue the next message from this queue, return null failing that.- Specified by:
dequeuein interfaceMessageQueue
-
enqueue
Description copied from interface:MessageQueueTry to enqueue the message to this queue, or throw an exception.- Specified by:
enqueuein interfaceMessageQueue
-
hasMessages
public final boolean hasMessages()Description copied from interface:MessageQueueIndicates whether this queue is non-empty.- Specified by:
hasMessagesin interfaceMessageQueue
-
numberOfMessages
public final int numberOfMessages()Description copied from interface:MessageQueueShould return the current number of messages held in this queue; may always return 0 if no other value is available efficiently. Do not use this for testing for presence of messages, usehasMessagesinstead.- Specified by:
numberOfMessagesin interfaceMessageQueue
-
pushTimeOut
public final scala.concurrent.duration.Duration pushTimeOut()- Specified by:
pushTimeOutin interfaceBoundedMessageQueueSemantics
-