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 boolean
active
protected ActiveMQMessageAudit
audit
protected boolean
discarding
protected List<org.apache.activemq.broker.region.TopicSubscription.DispatchedNode>
dispatched
protected Object
dispatchLock
protected boolean
enableAudit
protected PendingMessageCursor
matched
protected int
maxAuditDepth
protected int
maxProducersToAudit
protected SystemUsage
usageManager
-
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 void
acknowledge(ConnectionContext context, MessageAck ack)
Used when client acknowledge receipt of dispatched message.void
add(MessageReference node)
Used to add messages that match the subscription.int
countBeforeFull()
void
destroy()
Called when the subscription is destroyed.int
discarded()
long
getDequeueCounter()
long
getDispatchedCounter()
int
getDispatchedQueueSize()
long
getEnqueueCounter()
int
getInFlightSize()
PendingMessageCursor
getMatched()
int
getMaxAuditDepth()
int
getMaximumPendingMessages()
int
getMaxProducersToAudit()
int
getMemoryUsageHighWaterMark()
MessageEvictionStrategy
getMessageEvictionStrategy()
long
getPendingMessageSize()
int
getPendingQueueSize()
int
getPrefetchSize()
SystemUsage
getUsageManager()
void
init()
boolean
isEnableAudit()
boolean
isFull()
boolean
isHighWaterMark()
boolean
isLowWaterMark()
boolean
isUseTopicSubscriptionInflightStats()
int
matched()
void
processMessageDispatchNotification(MessageDispatchNotification mdn)
Used by a Slave Broker to update dispatch infomationResponse
pullMessage(ConnectionContext context, MessagePull pull)
Allows a consumer to pull a message on demandprotected void
removeExpiredMessages()
Discard any expired messages from the matched list.void
setEnableAudit(boolean enableAudit)
void
setMatched(PendingMessageCursor matched)
void
setMaxAuditDepth(int maxAuditDepth)
void
setMaximumPendingMessages(int maximumPendingMessages)
Sets the maximum number of pending messages that can be matched against this consumer before old messages are discarded.void
setMaxProducersToAudit(int maxProducersToAudit)
void
setMemoryUsageHighWaterMark(int memoryUsageHighWaterMark)
void
setMessageEvictionStrategy(MessageEvictionStrategy messageEvictionStrategy)
Sets the eviction strategy used to decide which message to evict when the slow consumer needs to discard messagesvoid
setPrefetchSize(int newSize)
void
setUseTopicSubscriptionInflightStats(boolean useTopicSubscriptionInflightStats)
String
toString()
void
updateConsumerPrefetch(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:Subscription
Used to add messages that match the subscription.- Throws:
Exception
InterruptedException
IOException
-
removeExpiredMessages
protected void removeExpiredMessages() throws IOException
Discard any expired messages from the matched list. Called from a synchronized block.- Throws:
IOException
-
processMessageDispatchNotification
public void processMessageDispatchNotification(MessageDispatchNotification mdn)
Description copied from interface:Subscription
Used by a Slave Broker to update dispatch infomation
-
acknowledge
public void acknowledge(ConnectionContext context, MessageAck ack) throws Exception
Description copied from interface:Subscription
Used when client acknowledge receipt of dispatched message.- Specified by:
acknowledge
in interfaceSubscription
- Overrides:
acknowledge
in classAbstractSubscription
- Throws:
IOException
Exception
-
pullMessage
public Response pullMessage(ConnectionContext context, MessagePull pull) throws Exception
Description copied from interface:Subscription
Allows a consumer to pull a message on demand- Throws:
Exception
-
countBeforeFull
public int countBeforeFull()
- Specified by:
countBeforeFull
in interfaceSubscription
- Overrides:
countBeforeFull
in 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:Subscription
Called when the subscription is destroyed.
-
getPrefetchSize
public int getPrefetchSize()
- Specified by:
getPrefetchSize
in interfaceSubscription
- Overrides:
getPrefetchSize
in classAbstractSubscription
- Returns:
- the prefetch size that is configured for the subscription
-
setPrefetchSize
public void setPrefetchSize(int newSize)
- Overrides:
setPrefetchSize
in classAbstractSubscription
-
isUseTopicSubscriptionInflightStats
public boolean isUseTopicSubscriptionInflightStats()
-
setUseTopicSubscriptionInflightStats
public void setUseTopicSubscriptionInflightStats(boolean useTopicSubscriptionInflightStats)
-
-