Class BucketDelayedDeliveryTracker
java.lang.Object
org.apache.pulsar.broker.delayed.AbstractDelayedDeliveryTracker
org.apache.pulsar.broker.delayed.bucket.BucketDelayedDeliveryTracker
- All Implemented Interfaces:
io.netty.util.TimerTask,AutoCloseable,DelayedDeliveryTracker
-
Field Summary
FieldsFields inherited from class org.apache.pulsar.broker.delayed.AbstractDelayedDeliveryTracker
clock, dispatcher, tickTimeMillis, timeout, timerFields inherited from interface org.apache.pulsar.broker.delayed.DelayedDeliveryTracker
DISABLE -
Constructor Summary
ConstructorsConstructorDescriptionBucketDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, boolean isDelayedDeliveryDeliverAtTimeStrict, BucketSnapshotStorage bucketSnapshotStorage, long minIndexCountPerBucket, long timeStepPerBucketSnapshotSegmentInMillis, int maxIndexesPerBucketSnapshotSegment, int maxNumBuckets) BucketDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, Clock clock, boolean isDelayedDeliveryDeliverAtTimeStrict, BucketSnapshotStorage bucketSnapshotStorage, long minIndexCountPerBucket, long timeStepPerBucketSnapshotSegmentInMillis, int maxIndexesPerBucketSnapshotSegment, int maxNumBuckets) -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddMessage(long ledgerId, long entryId, long deliverAt) Add a message to the tracker.clear()Clear all delayed messages from the tracker.voidclose()Close the subscription tracker and release all resources.booleancontainsMessage(long ledgerId, long entryId) longThe amount of memory used to back the delayed message index.longgetScheduledMessages(int maxMessages) Get a set of position of messages that have already reached the delivery time.booleanReturn true if there's at least a message that is scheduled to be delivered already.protected longvoidrun(io.netty.util.Timeout timeout) booleanTells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available.Methods inherited from class org.apache.pulsar.broker.delayed.AbstractDelayedDeliveryTracker
getCutoffTime, resetTickTime, updateTimer
-
Field Details
-
DELAYED_BUCKET_KEY_PREFIX
- See Also:
-
-
Constructor Details
-
BucketDelayedDeliveryTracker
public BucketDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, boolean isDelayedDeliveryDeliverAtTimeStrict, BucketSnapshotStorage bucketSnapshotStorage, long minIndexCountPerBucket, long timeStepPerBucketSnapshotSegmentInMillis, int maxIndexesPerBucketSnapshotSegment, int maxNumBuckets) throws RecoverDelayedDeliveryTrackerException -
BucketDelayedDeliveryTracker
public BucketDelayedDeliveryTracker(AbstractPersistentDispatcherMultipleConsumers dispatcher, io.netty.util.Timer timer, long tickTimeMillis, Clock clock, boolean isDelayedDeliveryDeliverAtTimeStrict, BucketSnapshotStorage bucketSnapshotStorage, long minIndexCountPerBucket, long timeStepPerBucketSnapshotSegmentInMillis, int maxIndexesPerBucketSnapshotSegment, int maxNumBuckets) throws RecoverDelayedDeliveryTrackerException
-
-
Method Details
-
run
- Specified by:
runin interfaceio.netty.util.TimerTask- Overrides:
runin classAbstractDelayedDeliveryTracker- Throws:
Exception
-
addMessage
public boolean addMessage(long ledgerId, long entryId, long deliverAt) Description copied from interface:DelayedDeliveryTrackerAdd a message to the tracker.- Parameters:
ledgerId- the ledgerIdentryId- the entryIddeliverAt- 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()Description copied from interface:DelayedDeliveryTrackerReturn true if there's at least a message that is scheduled to be delivered already. -
nextDeliveryTime
protected long nextDeliveryTime()- Specified by:
nextDeliveryTimein classAbstractDelayedDeliveryTracker
-
getNumberOfDelayedMessages
public long getNumberOfDelayedMessages()- Returns:
- the number of delayed messages being tracked.
-
getBufferMemoryUsage
public long getBufferMemoryUsage()Description copied from interface:DelayedDeliveryTrackerThe amount of memory used to back the delayed message index. -
getScheduledMessages
Description copied from interface:DelayedDeliveryTrackerGet a set of position of messages that have already reached the delivery time. -
shouldPauseAllDeliveries
public boolean shouldPauseAllDeliveries()Description copied from interface:DelayedDeliveryTrackerTells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available. -
clear
Description copied from interface:DelayedDeliveryTrackerClear all delayed messages from the tracker.- Returns:
- CompletableFuture
-
close
public void close()Description copied from interface:DelayedDeliveryTrackerClose the subscription tracker and release all resources.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceDelayedDeliveryTracker- Overrides:
closein classAbstractDelayedDeliveryTracker
-
containsMessage
public boolean containsMessage(long ledgerId, long entryId) -
genTopicMetricMap
-