Class StoreDurableSubscriberCursor
- java.lang.Object
-
- org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor
-
- org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor
-
- All Implemented Interfaces:
PendingMessageCursor
,org.apache.activemq.Service
public class StoreDurableSubscriberCursor extends AbstractPendingMessageCursor
persist pending messages pending message (messages awaiting dispatch to a consumer) cursor
-
-
Field Summary
-
Fields inherited from class org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor
audit, cacheEnabled, enableAudit, last, maxAuditDepth, maxBatchSize, maxProducersToAudit, memoryUsageHighWaterMark, prioritizedMessages, started, systemUsage, useCache
-
Fields inherited from interface org.apache.activemq.broker.region.cursors.PendingMessageCursor
INFINITE_WAIT
-
-
Constructor Summary
Constructors Constructor Description StoreDurableSubscriberCursor(Broker broker, String clientId, String subscriberName, int maxBatchSize, DurableTopicSubscription subscription)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(ConnectionContext context, Destination destination)
Add a destinationvoid
addMessageFirst(org.apache.activemq.broker.region.MessageReference node)
add message to await dispatchvoid
addRecoveredMessage(org.apache.activemq.broker.region.MessageReference node)
Add a message recovered from a retroactive policyvoid
clear()
clear all pending messagesvoid
gc()
free up any internal buffersprotected PendingMessageCursor
getNextCursor()
boolean
hasNext()
boolean
isEmpty()
boolean
isEmpty(Destination destination)
check if a Destination is Empty for this cursorboolean
isImmediatePriorityDispatch()
boolean
isRecoveryRequired()
Informs the Broker if the subscription needs to intervention to recover it's state e.g.boolean
isTransient()
long
messageSize()
org.apache.activemq.broker.region.MessageReference
next()
void
release()
hint to the cursor to release any locks it might have grabbed after a resetvoid
remove()
remove the message at the cursor positionList<org.apache.activemq.broker.region.MessageReference>
remove(ConnectionContext context, Destination destination)
remove a destinationvoid
remove(org.apache.activemq.broker.region.MessageReference node)
remove a nodevoid
reset()
reset the cursorvoid
setEnableAudit(boolean enableAudit)
void
setImmediatePriorityDispatch(boolean immediatePriorityDispatch)
void
setMaxAuditDepth(int maxAuditDepth)
Set the maximum depth of message ids to trackvoid
setMaxBatchSize(int newMaxBatchSize)
Set the max batch sizevoid
setMaxProducersToAudit(int maxProducersToAudit)
set the maximum number of producers to track at one timevoid
setMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)
void
setSystemUsage(SystemUsage usageManager)
Set the UsageManagervoid
setUseCache(boolean useCache)
use a cache to improve performanceint
size()
void
start()
void
stop()
String
toString()
boolean
tryAddMessageLast(org.apache.activemq.broker.region.MessageReference node, long wait)
add message to await dispatch - if it can-
Methods inherited from class org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor
addMessageLast, destroy, fillBatch, getMaxAuditDepth, getMaxBatchSize, getMaxProducersToAudit, getMemoryUsageHighWaterMark, getMessageAudit, getSystemUsage, hasMessagesBufferedToDeliver, hasSpace, isCacheEnabled, isDuplicate, isEnableAudit, isFull, isPrioritizedMessageSubscriber, isStarted, isUseCache, pageInList, rebase, recordUniqueId, resetForGC, rollback, setCacheEnabled, setMessageAudit
-
-
-
-
Constructor Detail
-
StoreDurableSubscriberCursor
public StoreDurableSubscriberCursor(Broker broker, String clientId, String subscriberName, int maxBatchSize, DurableTopicSubscription subscription)
- Parameters:
broker
- Broker for this cursorclientId
- clientId for this cursorsubscriberName
- subscriber name for this cursormaxBatchSize
- currently ignoredsubscription
- subscription for this cursor
-
-
Method Detail
-
start
public void start() throws Exception
- Specified by:
start
in interfaceorg.apache.activemq.Service
- Overrides:
start
in classAbstractPendingMessageCursor
- Throws:
Exception
-
stop
public void stop() throws Exception
- Specified by:
stop
in interfaceorg.apache.activemq.Service
- Overrides:
stop
in classAbstractPendingMessageCursor
- Throws:
Exception
-
add
public void add(ConnectionContext context, Destination destination) throws Exception
Add a destination- Specified by:
add
in interfacePendingMessageCursor
- Overrides:
add
in classAbstractPendingMessageCursor
- Parameters:
context
-destination
-- Throws:
Exception
-
remove
public List<org.apache.activemq.broker.region.MessageReference> remove(ConnectionContext context, Destination destination) throws Exception
remove a destination- Specified by:
remove
in interfacePendingMessageCursor
- Overrides:
remove
in classAbstractPendingMessageCursor
- Parameters:
context
-destination
-- Throws:
Exception
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfacePendingMessageCursor
- Overrides:
isEmpty
in classAbstractPendingMessageCursor
- Returns:
- true if there are no pending messages
-
isEmpty
public boolean isEmpty(Destination destination)
Description copied from interface:PendingMessageCursor
check if a Destination is Empty for this cursor- Specified by:
isEmpty
in interfacePendingMessageCursor
- Overrides:
isEmpty
in classAbstractPendingMessageCursor
- Returns:
- true id the Destination is empty
-
isRecoveryRequired
public boolean isRecoveryRequired()
Informs the Broker if the subscription needs to intervention to recover it's state e.g. DurableTopicSubscriber may do- Specified by:
isRecoveryRequired
in interfacePendingMessageCursor
- Overrides:
isRecoveryRequired
in classAbstractPendingMessageCursor
- Returns:
- true if recovery required
- See Also:
AbstractPendingMessageCursor
-
tryAddMessageLast
public boolean tryAddMessageLast(org.apache.activemq.broker.region.MessageReference node, long wait) throws Exception
Description copied from interface:PendingMessageCursor
add message to await dispatch - if it can- Specified by:
tryAddMessageLast
in interfacePendingMessageCursor
- Overrides:
tryAddMessageLast
in classAbstractPendingMessageCursor
- Returns:
- true if successful
- Throws:
IOException
Exception
-
isTransient
public boolean isTransient()
- Specified by:
isTransient
in interfacePendingMessageCursor
- Overrides:
isTransient
in classAbstractPendingMessageCursor
- Returns:
- true if the underlying state of this cursor disappears when the broker shuts down
-
addMessageFirst
public void addMessageFirst(org.apache.activemq.broker.region.MessageReference node) throws Exception
Description copied from interface:PendingMessageCursor
add message to await dispatch- Specified by:
addMessageFirst
in interfacePendingMessageCursor
- Overrides:
addMessageFirst
in classAbstractPendingMessageCursor
- Throws:
Exception
-
addRecoveredMessage
public void addRecoveredMessage(org.apache.activemq.broker.region.MessageReference node) throws Exception
Description copied from interface:PendingMessageCursor
Add a message recovered from a retroactive policy- Specified by:
addRecoveredMessage
in interfacePendingMessageCursor
- Overrides:
addRecoveredMessage
in classAbstractPendingMessageCursor
- Throws:
Exception
-
clear
public void clear()
Description copied from interface:PendingMessageCursor
clear all pending messages- Specified by:
clear
in interfacePendingMessageCursor
- Overrides:
clear
in classAbstractPendingMessageCursor
-
hasNext
public boolean hasNext()
- Specified by:
hasNext
in interfacePendingMessageCursor
- Overrides:
hasNext
in classAbstractPendingMessageCursor
- Returns:
- true if there pending messages to dispatch
-
next
public org.apache.activemq.broker.region.MessageReference next()
- Specified by:
next
in interfacePendingMessageCursor
- Overrides:
next
in classAbstractPendingMessageCursor
- Returns:
- the next pending message with its reference count increment
-
remove
public void remove()
Description copied from interface:PendingMessageCursor
remove the message at the cursor position- Specified by:
remove
in interfacePendingMessageCursor
- Overrides:
remove
in classAbstractPendingMessageCursor
-
remove
public void remove(org.apache.activemq.broker.region.MessageReference node)
Description copied from interface:PendingMessageCursor
remove a node- Specified by:
remove
in interfacePendingMessageCursor
- Overrides:
remove
in classAbstractPendingMessageCursor
-
reset
public void reset()
Description copied from interface:PendingMessageCursor
reset the cursor- Specified by:
reset
in interfacePendingMessageCursor
- Overrides:
reset
in classAbstractPendingMessageCursor
-
release
public void release()
Description copied from interface:PendingMessageCursor
hint to the cursor to release any locks it might have grabbed after a reset- Specified by:
release
in interfacePendingMessageCursor
- Overrides:
release
in classAbstractPendingMessageCursor
-
size
public int size()
- Specified by:
size
in interfacePendingMessageCursor
- Overrides:
size
in classAbstractPendingMessageCursor
- Returns:
- the number of pending messages
-
messageSize
public long messageSize()
-
setMaxBatchSize
public void setMaxBatchSize(int newMaxBatchSize)
Description copied from interface:PendingMessageCursor
Set the max batch size- Specified by:
setMaxBatchSize
in interfacePendingMessageCursor
- Overrides:
setMaxBatchSize
in classAbstractPendingMessageCursor
-
gc
public void gc()
Description copied from interface:PendingMessageCursor
free up any internal buffers- Specified by:
gc
in interfacePendingMessageCursor
- Overrides:
gc
in classAbstractPendingMessageCursor
-
setSystemUsage
public void setSystemUsage(SystemUsage usageManager)
Description copied from interface:PendingMessageCursor
Set the UsageManager- Specified by:
setSystemUsage
in interfacePendingMessageCursor
- Overrides:
setSystemUsage
in classAbstractPendingMessageCursor
- See Also:
SystemUsage
-
setMemoryUsageHighWaterMark
public void setMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)
- Specified by:
setMemoryUsageHighWaterMark
in interfacePendingMessageCursor
- Overrides:
setMemoryUsageHighWaterMark
in classAbstractPendingMessageCursor
- Parameters:
memoryUsageHighWaterMark
- the memoryUsageHighWaterMark to set
-
setMaxProducersToAudit
public void setMaxProducersToAudit(int maxProducersToAudit)
Description copied from interface:PendingMessageCursor
set the maximum number of producers to track at one time- Specified by:
setMaxProducersToAudit
in interfacePendingMessageCursor
- Overrides:
setMaxProducersToAudit
in classAbstractPendingMessageCursor
- Parameters:
maxProducersToAudit
- the maxProducersToAudit to set
-
setMaxAuditDepth
public void setMaxAuditDepth(int maxAuditDepth)
Description copied from interface:PendingMessageCursor
Set the maximum depth of message ids to track- Specified by:
setMaxAuditDepth
in interfacePendingMessageCursor
- Overrides:
setMaxAuditDepth
in classAbstractPendingMessageCursor
- Parameters:
maxAuditDepth
- the maxAuditDepth to set
-
setEnableAudit
public void setEnableAudit(boolean enableAudit)
- Specified by:
setEnableAudit
in interfacePendingMessageCursor
- Overrides:
setEnableAudit
in classAbstractPendingMessageCursor
- Parameters:
enableAudit
- the enableAudit to set
-
setUseCache
public void setUseCache(boolean useCache)
Description copied from interface:PendingMessageCursor
use a cache to improve performance- Specified by:
setUseCache
in interfacePendingMessageCursor
- Overrides:
setUseCache
in classAbstractPendingMessageCursor
-
getNextCursor
protected PendingMessageCursor getNextCursor() throws Exception
- Throws:
Exception
-
isImmediatePriorityDispatch
public boolean isImmediatePriorityDispatch()
-
setImmediatePriorityDispatch
public void setImmediatePriorityDispatch(boolean immediatePriorityDispatch)
-
-