Class InMemoryDelayedDeliveryTracker

java.lang.Object
org.apache.pulsar.broker.delayed.InMemoryDelayedDeliveryTracker
All Implemented Interfaces:
io.netty.util.TimerTask, AutoCloseable, DelayedDeliveryTracker

public class InMemoryDelayedDeliveryTracker extends Object implements DelayedDeliveryTracker, io.netty.util.TimerTask
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final org.apache.pulsar.common.util.collections.TripleLongPriorityQueue
     
    protected io.netty.util.Timeout
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    addMessage(long ledgerId, long entryId, long deliverAt)
    Add a message to the tracker.
    void
    Clear all delayed messages from the tracker.
    void
    Close the subscription tracker and release all resources.
    long
     
    long
     
    Set<org.apache.bookkeeper.mledger.impl.PositionImpl>
    getScheduledMessages(int maxMessages)
    Get a set of position of messages that have already reached.
    boolean
    Return true if there's at least a message that is scheduled to be delivered already.
    void
    resetTickTime(long tickTime)
    Reset tick time use zk policies cache.
    void
    run(io.netty.util.Timeout timeout)
     
    boolean
    Tells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • priorityQueue

      protected final org.apache.pulsar.common.util.collections.TripleLongPriorityQueue priorityQueue
    • timeout

      protected io.netty.util.Timeout timeout
  • Method Details

    • addMessage

      public boolean addMessage(long ledgerId, long entryId, long deliverAt)
      Description copied from interface: DelayedDeliveryTracker
      Add a message to the tracker.
      Specified by:
      addMessage in interface DelayedDeliveryTracker
      Parameters:
      ledgerId - the ledgerId
      entryId - the entryId
      deliverAt - the absolute timestamp at which the message should be tracked
      Returns:
      true if the message was added to the tracker or false if it should be delivered immediately
    • hasMessageAvailable

      public boolean hasMessageAvailable()
      Return true if there's at least a message that is scheduled to be delivered already.
      Specified by:
      hasMessageAvailable in interface DelayedDeliveryTracker
    • getScheduledMessages

      public Set<org.apache.bookkeeper.mledger.impl.PositionImpl> getScheduledMessages(int maxMessages)
      Get a set of position of messages that have already reached.
      Specified by:
      getScheduledMessages in interface DelayedDeliveryTracker
    • resetTickTime

      public void resetTickTime(long tickTime)
      Description copied from interface: DelayedDeliveryTracker
      Reset tick time use zk policies cache.
      Specified by:
      resetTickTime in interface DelayedDeliveryTracker
      Parameters:
      tickTime - The tick time for when retrying on delayed delivery messages
    • clear

      public void clear()
      Description copied from interface: DelayedDeliveryTracker
      Clear all delayed messages from the tracker.
      Specified by:
      clear in interface DelayedDeliveryTracker
    • getNumberOfDelayedMessages

      public long getNumberOfDelayedMessages()
      Specified by:
      getNumberOfDelayedMessages in interface DelayedDeliveryTracker
      Returns:
      the number of delayed messages being tracked.
    • getBufferMemoryUsage

      public long getBufferMemoryUsage()
    • run

      public void run(io.netty.util.Timeout timeout) throws Exception
      Specified by:
      run in interface io.netty.util.TimerTask
      Throws:
      Exception
    • close

      public void close()
      Description copied from interface: DelayedDeliveryTracker
      Close the subscription tracker and release all resources.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface DelayedDeliveryTracker
    • shouldPauseAllDeliveries

      public boolean shouldPauseAllDeliveries()
      Description copied from interface: DelayedDeliveryTracker
      Tells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available.
      Specified by:
      shouldPauseAllDeliveries in interface DelayedDeliveryTracker