Class BoundedNodeMessageQueue

java.lang.Object
org.apache.pekko.dispatch.AbstractBoundedNodeQueue<Envelope>
org.apache.pekko.dispatch.BoundedNodeMessageQueue
All Implemented Interfaces:
BoundedMessageQueueSemantics, MessageQueue, MultipleConsumerSemantics

Lock-free bounded non-blocking multiple-producer single-consumer queue. Discards overflowing messages into DeadLetters.
  • Constructor Details

    • BoundedNodeMessageQueue

      public BoundedNodeMessageQueue(int capacity)
  • Method Details

    • cleanUp

      public final void cleanUp(ActorRef owner, MessageQueue deadLetters)
      Description copied from interface: MessageQueue
      Called 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()), &ldquo;/deadletters&rdquo; otherwise.

      Note that we implement the method in a recursive manner mainly for atomicity (not touching the queue twice).

      Specified by:
      cleanUp in interface MessageQueue
    • dequeue

      public final Envelope dequeue()
      Description copied from interface: MessageQueue
      Try to dequeue the next message from this queue, return null failing that.
      Specified by:
      dequeue in interface MessageQueue
    • enqueue

      public final void enqueue(ActorRef receiver, Envelope handle)
      Description copied from interface: MessageQueue
      Try to enqueue the message to this queue, or throw an exception.
      Specified by:
      enqueue in interface MessageQueue
    • hasMessages

      public final boolean hasMessages()
      Description copied from interface: MessageQueue
      Indicates whether this queue is non-empty.
      Specified by:
      hasMessages in interface MessageQueue
    • numberOfMessages

      public final int numberOfMessages()
      Description copied from interface: MessageQueue
      Should 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, use hasMessages instead.
      Specified by:
      numberOfMessages in interface MessageQueue
    • pushTimeOut

      public final scala.concurrent.duration.Duration pushTimeOut()
      Specified by:
      pushTimeOut in interface BoundedMessageQueueSemantics