Class AbstractDelayedDeliveryTracker

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

public abstract class AbstractDelayedDeliveryTracker extends Object implements DelayedDeliveryTracker, io.netty.util.TimerTask
  • Field Details

    • dispatcher

    • timer

      protected final io.netty.util.Timer timer
    • timeout

      protected io.netty.util.Timeout timeout
    • tickTimeMillis

      protected long tickTimeMillis
    • clock

      protected final Clock clock
  • Constructor Details

  • Method Details

    • getCutoffTime

      protected long getCutoffTime()
      When isDelayedDeliveryDeliverAtTimeStrict is false, we allow for early delivery by as much as the tickTimeMillis because it is a slight optimization to let messages skip going back into the delay tracker for a brief amount of time when we're already trying to dispatch to the consumer. When isDelayedDeliveryDeliverAtTimeStrict is true, we use the current time to determine when messages can be delivered. As a consequence, there are two delays that will affect delivery. The first is the tickTimeMillis and the second is the Timer's granularity.
      Returns:
      the cutoff time to determine whether a message is ready to deliver to the consumer
    • 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
    • updateTimer

      protected void updateTimer()
    • 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
    • nextDeliveryTime

      protected abstract long nextDeliveryTime()