Class TopicSubscription
- java.lang.Object
-
- org.apache.activemq.broker.region.AbstractSubscription
-
- org.apache.activemq.broker.region.TopicSubscription
-
- All Implemented Interfaces:
Subscription,SubscriptionRecovery
public class TopicSubscription extends AbstractSubscription
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanactiveprotected ActiveMQMessageAuditauditprotected booleandiscardingprotected List<org.apache.activemq.broker.region.TopicSubscription.DispatchedNode>dispatchedprotected ObjectdispatchLockprotected booleanenableAuditprotected PendingMessageCursormatchedprotected intmaxAuditDepthprotected intmaxProducersToAuditprotected SystemUsageusageManager-
Fields inherited from class org.apache.activemq.broker.region.AbstractSubscription
broker, context, destinationFilter, destinations, info, prefetchExtension
-
-
Constructor Summary
Constructors Constructor Description TopicSubscription(Broker broker, ConnectionContext context, ConsumerInfo info, SystemUsage usageManager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidacknowledge(ConnectionContext context, MessageAck ack)Used when client acknowledge receipt of dispatched message.voidadd(MessageReference node)Used to add messages that match the subscription.intcountBeforeFull()voiddestroy()Called when the subscription is destroyed.intdiscarded()longgetDequeueCounter()longgetDispatchedCounter()intgetDispatchedQueueSize()longgetEnqueueCounter()intgetInFlightSize()PendingMessageCursorgetMatched()intgetMaxAuditDepth()intgetMaximumPendingMessages()intgetMaxProducersToAudit()intgetMemoryUsageHighWaterMark()MessageEvictionStrategygetMessageEvictionStrategy()longgetPendingMessageSize()intgetPendingQueueSize()intgetPrefetchSize()SystemUsagegetUsageManager()voidinit()booleanisEnableAudit()booleanisFull()booleanisHighWaterMark()booleanisLowWaterMark()booleanisUseTopicSubscriptionInflightStats()intmatched()voidprocessMessageDispatchNotification(MessageDispatchNotification mdn)Used by a Slave Broker to update dispatch infomationResponsepullMessage(ConnectionContext context, MessagePull pull)Allows a consumer to pull a message on demandprotected voidremoveExpiredMessages()Discard any expired messages from the matched list.voidsetEnableAudit(boolean enableAudit)voidsetMatched(PendingMessageCursor matched)voidsetMaxAuditDepth(int maxAuditDepth)voidsetMaximumPendingMessages(int maximumPendingMessages)Sets the maximum number of pending messages that can be matched against this consumer before old messages are discarded.voidsetMaxProducersToAudit(int maxProducersToAudit)voidsetMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)voidsetMessageEvictionStrategy(MessageEvictionStrategy messageEvictionStrategy)Sets the eviction strategy used to decide which message to evict when the slow consumer needs to discard messagesvoidsetPrefetchSize(int newSize)voidsetUseTopicSubscriptionInflightStats(boolean useTopicSubscriptionInflightStats)StringtoString()voidupdateConsumerPrefetch(int newPrefetch)inform the MessageConsumer on the client to change it's prefetch-
Methods inherited from class org.apache.activemq.broker.region.AbstractSubscription
add, addDestination, addRecoveredMessage, contractPrefetchExtension, decrementPrefetchExtension, doAddRecoveredMessage, expandPrefetchExtension, gc, getActiveMQDestination, getConsumedCount, getConsumerInfo, getContext, getCursorMemoryHighWaterMark, getDestinations, getInFlightMessageSize, getInFlightUsage, getInfo, getObjectName, getPrefetchExtension, getSelector, getSelectorExpression, getSubscriptionStatistics, getTimeOfLastMessageAck, incrementConsumedCount, isBrowser, isRecoveryRequired, isSlowConsumer, isUsePrefetchExtension, isWildcard, matches, matches, remove, removeDestination, resetConsumedCount, setCursorMemoryHighWaterMark, setObjectName, setSelector, setSlowConsumer, setTimeOfLastMessageAck, setUsePrefetchExtension, unmatched, wakeupDestinationsForDispatch
-
-
-
-
Field Detail
-
matched
protected PendingMessageCursor matched
-
usageManager
protected final SystemUsage usageManager
-
maxProducersToAudit
protected int maxProducersToAudit
-
maxAuditDepth
protected int maxAuditDepth
-
enableAudit
protected boolean enableAudit
-
audit
protected ActiveMQMessageAudit audit
-
active
protected boolean active
-
discarding
protected boolean discarding
-
dispatchLock
protected final Object dispatchLock
-
dispatched
protected final List<org.apache.activemq.broker.region.TopicSubscription.DispatchedNode> dispatched
-
-
Constructor Detail
-
TopicSubscription
public TopicSubscription(Broker broker, ConnectionContext context, ConsumerInfo info, SystemUsage usageManager) throws Exception
- Throws:
Exception
-
-
Method Detail
-
add
public void add(MessageReference node) throws Exception
Description copied from interface:SubscriptionUsed to add messages that match the subscription.- Throws:
ExceptionInterruptedExceptionIOException
-
removeExpiredMessages
protected void removeExpiredMessages() throws IOExceptionDiscard any expired messages from the matched list. Called from a synchronized block.- Throws:
IOException
-
processMessageDispatchNotification
public void processMessageDispatchNotification(MessageDispatchNotification mdn)
Description copied from interface:SubscriptionUsed by a Slave Broker to update dispatch infomation
-
acknowledge
public void acknowledge(ConnectionContext context, MessageAck ack) throws Exception
Description copied from interface:SubscriptionUsed when client acknowledge receipt of dispatched message.- Specified by:
acknowledgein interfaceSubscription- Overrides:
acknowledgein classAbstractSubscription- Throws:
IOExceptionException
-
pullMessage
public Response pullMessage(ConnectionContext context, MessagePull pull) throws Exception
Description copied from interface:SubscriptionAllows a consumer to pull a message on demand- Throws:
Exception
-
countBeforeFull
public int countBeforeFull()
- Specified by:
countBeforeFullin interfaceSubscription- Overrides:
countBeforeFullin classAbstractSubscription- Returns:
- the number of messages this subscription can accept before its full
-
getPendingQueueSize
public int getPendingQueueSize()
- Returns:
- number of messages pending delivery
-
getPendingMessageSize
public long getPendingMessageSize()
- Returns:
- size of the messages pending delivery
-
getDispatchedQueueSize
public int getDispatchedQueueSize()
- Returns:
- number of messages dispatched to the client
-
getMaximumPendingMessages
public int getMaximumPendingMessages()
-
getDispatchedCounter
public long getDispatchedCounter()
- Returns:
- number of messages dispatched to the client
-
getEnqueueCounter
public long getEnqueueCounter()
- Returns:
- number of messages that matched the subscription
-
getDequeueCounter
public long getDequeueCounter()
- Returns:
- number of messages queued by the client
-
discarded
public int discarded()
- Returns:
- the number of messages discarded due to being a slow consumer
-
matched
public int matched()
- Returns:
- the number of matched messages (messages targeted for the subscription but not yet able to be dispatched due to the prefetch buffer being full).
-
setMaximumPendingMessages
public void setMaximumPendingMessages(int maximumPendingMessages)
Sets the maximum number of pending messages that can be matched against this consumer before old messages are discarded.
-
getMessageEvictionStrategy
public MessageEvictionStrategy getMessageEvictionStrategy()
-
setMessageEvictionStrategy
public void setMessageEvictionStrategy(MessageEvictionStrategy messageEvictionStrategy)
Sets the eviction strategy used to decide which message to evict when the slow consumer needs to discard messages
-
getMaxProducersToAudit
public int getMaxProducersToAudit()
-
setMaxProducersToAudit
public void setMaxProducersToAudit(int maxProducersToAudit)
-
getMaxAuditDepth
public int getMaxAuditDepth()
-
setMaxAuditDepth
public void setMaxAuditDepth(int maxAuditDepth)
-
isEnableAudit
public boolean isEnableAudit()
-
setEnableAudit
public void setEnableAudit(boolean enableAudit)
-
isFull
public boolean isFull()
- Returns:
- true if there is no space to dispatch messages
-
getInFlightSize
public int getInFlightSize()
- Returns:
- the number of messages awaiting acknowledgement
-
isLowWaterMark
public boolean isLowWaterMark()
- Returns:
- true when 60% or more room is left for dispatching messages
-
isHighWaterMark
public boolean isHighWaterMark()
- Returns:
- true when 10% or less room is left for dispatching messages
-
setMemoryUsageHighWaterMark
public void setMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)
- Parameters:
memoryUsageHighWaterMark- the memoryUsageHighWaterMark to set
-
getMemoryUsageHighWaterMark
public int getMemoryUsageHighWaterMark()
- Returns:
- the memoryUsageHighWaterMark
-
getUsageManager
public SystemUsage getUsageManager()
- Returns:
- the usageManager
-
getMatched
public PendingMessageCursor getMatched()
- Returns:
- the matched
-
setMatched
public void setMatched(PendingMessageCursor matched)
- Parameters:
matched- the matched to set
-
updateConsumerPrefetch
public void updateConsumerPrefetch(int newPrefetch)
inform the MessageConsumer on the client to change it's prefetch- Parameters:
newPrefetch-
-
destroy
public void destroy()
Description copied from interface:SubscriptionCalled when the subscription is destroyed.
-
getPrefetchSize
public int getPrefetchSize()
- Specified by:
getPrefetchSizein interfaceSubscription- Overrides:
getPrefetchSizein classAbstractSubscription- Returns:
- the prefetch size that is configured for the subscription
-
setPrefetchSize
public void setPrefetchSize(int newSize)
- Overrides:
setPrefetchSizein classAbstractSubscription
-
isUseTopicSubscriptionInflightStats
public boolean isUseTopicSubscriptionInflightStats()
-
setUseTopicSubscriptionInflightStats
public void setUseTopicSubscriptionInflightStats(boolean useTopicSubscriptionInflightStats)
-
-