Class StoreQueueCursor
- java.lang.Object
-
- org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor
-
- org.apache.activemq.broker.region.cursors.StoreQueueCursor
-
- All Implemented Interfaces:
PendingMessageCursor
,Service
public class StoreQueueCursor extends AbstractPendingMessageCursor
Store based Cursor for Queues
-
-
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 StoreQueueCursor(Broker broker, Queue queue)
Construct
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addMessageFirst(MessageReference node)
add message to await dispatchvoid
clear()
clear all pending messagesvoid
gc()
free up any internal buffersprotected PendingMessageCursor
getNextCursor()
PendingMessageCursor
getNonPersistent()
PendingMessageCursor
getPersistent()
boolean
hasNext()
boolean
isCacheEnabled()
boolean
isEmpty()
boolean
isRecoveryRequired()
Informs the Broker if the subscription needs to intervention to recover it's state e.g.long
messageSize()
MessageReference
next()
void
rebase()
void
release()
hint to the cursor to release any locks it might have grabbed after a resetvoid
remove()
remove the message at the cursor positionvoid
remove(MessageReference node)
remove a nodevoid
reset()
reset the cursorvoid
rollback(MessageId id)
remove from auditing the message idvoid
setEnableAudit(boolean enableAudit)
void
setMaxAuditDepth(int maxAuditDepth)
Set the maximum depth of message ids to trackvoid
setMaxBatchSize(int maxBatchSize)
Set the max batch sizevoid
setMaxProducersToAudit(int maxProducersToAudit)
set the maximum number of producers to track at one timevoid
setMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)
void
setNonPersistent(PendingMessageCursor nonPersistent)
void
setSystemUsage(SystemUsage usageManager)
Set the UsageManagervoid
setUseCache(boolean useCache)
use a cache to improve performanceint
size()
void
start()
void
stop()
boolean
tryAddMessageLast(MessageReference node, long maxWait)
add message to await dispatch - if it can-
Methods inherited from class org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor
add, addMessageLast, addRecoveredMessage, destroy, fillBatch, getMaxAuditDepth, getMaxBatchSize, getMaxProducersToAudit, getMemoryUsageHighWaterMark, getMessageAudit, getSystemUsage, hasMessagesBufferedToDeliver, hasSpace, isDuplicate, isEmpty, isEnableAudit, isFull, isPrioritizedMessageSubscriber, isStarted, isTransient, isUseCache, pageInList, recordUniqueId, remove, resetForGC, setCacheEnabled, setMessageAudit
-
-
-
-
Method Detail
-
start
public void start() throws Exception
- Specified by:
start
in interfaceService
- Overrides:
start
in classAbstractPendingMessageCursor
- Throws:
Exception
-
stop
public void stop() throws Exception
- Specified by:
stop
in interfaceService
- Overrides:
stop
in classAbstractPendingMessageCursor
- Throws:
Exception
-
tryAddMessageLast
public boolean tryAddMessageLast(MessageReference node, long maxWait) 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
-
addMessageFirst
public void addMessageFirst(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
-
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 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(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()
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfacePendingMessageCursor
- Overrides:
isEmpty
in classAbstractPendingMessageCursor
- Returns:
- true if there are no pending messages
-
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:
PendingMessageCursor
-
getNonPersistent
public PendingMessageCursor getNonPersistent()
- Returns:
- the nonPersistent Cursor
-
setNonPersistent
public void setNonPersistent(PendingMessageCursor nonPersistent)
- Parameters:
nonPersistent
- cursor to set
-
getPersistent
public PendingMessageCursor getPersistent()
- Returns:
- the persistent Cursor
-
setMaxBatchSize
public void setMaxBatchSize(int maxBatchSize)
Description copied from interface:PendingMessageCursor
Set the max batch size- Specified by:
setMaxBatchSize
in interfacePendingMessageCursor
- Overrides:
setMaxBatchSize
in classAbstractPendingMessageCursor
-
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
-
rollback
public void rollback(MessageId id)
Description copied from interface:PendingMessageCursor
remove from auditing the message id- Specified by:
rollback
in interfacePendingMessageCursor
- Overrides:
rollback
in classAbstractPendingMessageCursor
-
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
-
setMemoryUsageHighWaterMark
public void setMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)
- Specified by:
setMemoryUsageHighWaterMark
in interfacePendingMessageCursor
- Overrides:
setMemoryUsageHighWaterMark
in classAbstractPendingMessageCursor
- Parameters:
memoryUsageHighWaterMark
- the memoryUsageHighWaterMark to set
-
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
-
getNextCursor
protected PendingMessageCursor getNextCursor() throws Exception
- Throws:
Exception
-
isCacheEnabled
public boolean isCacheEnabled()
- Specified by:
isCacheEnabled
in interfacePendingMessageCursor
- Overrides:
isCacheEnabled
in classAbstractPendingMessageCursor
- Returns:
- true if cache is being used
-
rebase
public void rebase()
- Specified by:
rebase
in interfacePendingMessageCursor
- Overrides:
rebase
in classAbstractPendingMessageCursor
-
-