Package org.apache.pulsar.broker.delayed
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
FieldsModifier and TypeFieldDescriptionprotected final org.apache.pulsar.common.util.collections.TripleLongPriorityQueueprotected io.netty.util.Timeout -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddMessage(long ledgerId, long entryId, long deliverAt) Add a message to the tracker.voidclear()Clear all delayed messages from the tracker.voidclose()Close the subscription tracker and release all resources.longlongSet<org.apache.bookkeeper.mledger.impl.PositionImpl>getScheduledMessages(int maxMessages) Get a set of position of messages that have already reached.booleanReturn true if there's at least a message that is scheduled to be delivered already.voidresetTickTime(long tickTime) Reset tick time use zk policies cache.voidrun(io.netty.util.Timeout timeout) booleanTells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available.
-
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:DelayedDeliveryTrackerAdd a message to the tracker.- Specified by:
addMessagein interfaceDelayedDeliveryTracker- 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()Return true if there's at least a message that is scheduled to be delivered already.- Specified by:
hasMessageAvailablein interfaceDelayedDeliveryTracker
-
getScheduledMessages
Get a set of position of messages that have already reached.- Specified by:
getScheduledMessagesin interfaceDelayedDeliveryTracker
-
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
-
clear
public void clear()Description copied from interface:DelayedDeliveryTrackerClear all delayed messages from the tracker.- Specified by:
clearin interfaceDelayedDeliveryTracker
-
getNumberOfDelayedMessages
public long getNumberOfDelayedMessages()- Specified by:
getNumberOfDelayedMessagesin interfaceDelayedDeliveryTracker- Returns:
- the number of delayed messages being tracked.
-
getBufferMemoryUsage
public long getBufferMemoryUsage() -
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
-
shouldPauseAllDeliveries
public boolean shouldPauseAllDeliveries()Description copied from interface:DelayedDeliveryTrackerTells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available.- Specified by:
shouldPauseAllDeliveriesin interfaceDelayedDeliveryTracker
-