Class InMemoryDelayedDeliveryTracker

  • All Implemented Interfaces:
    io.netty.util.TimerTask, java.lang.AutoCloseable, DelayedDeliveryTracker

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

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addMessage​(long ledgerId, long entryId, long deliverAt)
      Add a message to the tracker.
      void clear()
      Clear all delayed messages from the tracker.
      void close()
      Close the subscription tracker and release all resources.
      long getNumberOfDelayedMessages()  
      java.util.Set<org.apache.bookkeeper.mledger.impl.PositionImpl> getScheduledMessages​(int maxMessages)
      Get a set of position of messages that have already reached.
      boolean hasMessageAvailable()
      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 shouldPauseAllDeliveries()
      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 Detail

      • priorityQueue

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

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

      • 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 java.util.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
      • run

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

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