Package org.apache.pulsar.broker.delayed
Class InMemoryDelayedDeliveryTracker
- java.lang.Object
-
- org.apache.pulsar.broker.delayed.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.TripleLongPriorityQueuepriorityQueueprotected io.netty.util.Timeouttimeout
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddMessage(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.longgetNumberOfDelayedMessages()java.util.Set<org.apache.bookkeeper.mledger.impl.PositionImpl>getScheduledMessages(int maxMessages)Get a set of position of messages that have already reached.booleanhasMessageAvailable()Return 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)booleanshouldPauseAllDeliveries()Tells whether the dispatcher should pause any message deliveries, until the DelayedDeliveryTracker has more messages available.
-
-
-
Method Detail
-
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
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:
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.
-
run
public void run(io.netty.util.Timeout timeout) throws java.lang.Exception- Specified by:
runin interfaceio.netty.util.TimerTask- Throws:
java.lang.Exception
-
close
public void close()
Description copied from interface:DelayedDeliveryTrackerClose the subscription tracker and release all resources.- Specified by:
closein interfacejava.lang.AutoCloseable- 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
-
-