Package org.apache.pulsar.broker.delayed
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 Summary
FieldsModifier and TypeFieldDescriptionprotected final Clockprotected final AbstractPersistentDispatcherMultipleConsumersprotected longprotected io.netty.util.Timeoutprotected final io.netty.util.TimerFields inherited from interface org.apache.pulsar.broker.delayed.DelayedDeliveryTracker
DISABLE -
Constructor Summary
ConstructorsConstructorDescriptionAbstractDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, boolean isDelayedDeliveryDeliverAtTimeStrict) AbstractDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, Clock clock, boolean isDelayedDeliveryDeliverAtTimeStrict) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Close the subscription tracker and release all resources.protected longWhenisDelayedDeliveryDeliverAtTimeStrictis false, we allow for early delivery by as much as thetickTimeMillisbecause 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.protected abstract longvoidresetTickTime(long tickTime) Reset tick time use zk policies cache.voidrun(io.netty.util.Timeout timeout) protected voidMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.pulsar.broker.delayed.DelayedDeliveryTracker
addMessage, clear, getBufferMemoryUsage, getNumberOfDelayedMessages, getScheduledMessages, hasMessageAvailable, shouldPauseAllDeliveries
-
Field Details
-
dispatcher
-
timer
protected final io.netty.util.Timer timer -
timeout
protected io.netty.util.Timeout timeout -
tickTimeMillis
protected long tickTimeMillis -
clock
-
-
Constructor Details
-
AbstractDelayedDeliveryTracker
public AbstractDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, boolean isDelayedDeliveryDeliverAtTimeStrict) -
AbstractDelayedDeliveryTracker
public AbstractDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, Clock clock, boolean isDelayedDeliveryDeliverAtTimeStrict)
-
-
Method Details
-
getCutoffTime
protected long getCutoffTime()WhenisDelayedDeliveryDeliverAtTimeStrictis false, we allow for early delivery by as much as thetickTimeMillisbecause 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. WhenisDelayedDeliveryDeliverAtTimeStrictis 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 thetickTimeMillisand the second is theTimer'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:DelayedDeliveryTrackerReset tick time use zk policies cache.- Specified by:
resetTickTimein interfaceDelayedDeliveryTracker- Parameters:
tickTime- The tick time for when retrying on delayed delivery messages
-
updateTimer
protected void updateTimer() -
run
- Specified by:
runin interfaceio.netty.util.TimerTask- Throws:
Exception
-
close
public void close()Description copied from interface:DelayedDeliveryTrackerClose the subscription tracker and release all resources.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceDelayedDeliveryTracker
-
nextDeliveryTime
protected abstract long nextDeliveryTime()
-