org.apache.activemq.broker.region
Class TopicSubscription

java.lang.Object
  extended by org.apache.activemq.broker.region.AbstractSubscription
      extended by org.apache.activemq.broker.region.TopicSubscription
All Implemented Interfaces:
Subscription, SubscriptionRecovery

public class TopicSubscription
extends AbstractSubscription


Field Summary
protected  boolean active
           
protected  ActiveMQMessageAudit audit
           
protected  AtomicLong dispatchedCounter
           
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
 
Constructor Summary
TopicSubscription(Broker broker, ConnectionContext context, ConsumerInfo info, SystemUsage usageManager)
           
 
Method Summary
 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.
 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()
           
 int getPendingQueueSize()
           
 int getPrefetchSize()
           
 SystemUsage getUsageManager()
           
 void init()
           
 boolean isEnableAudit()
           
 boolean isFull()
           
 boolean isHighWaterMark()
           
 boolean isLowWaterMark()
           
 int matched()
           
 void processMessageDispatchNotification(MessageDispatchNotification mdn)
          Used by a Slave Broker to update dispatch infomation
 Response pullMessage(ConnectionContext context, MessagePull pull)
          Allows a consumer to pull a message on demand
protected  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 messages
 void setPrefetchSize(int newSize)
           
 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, countBeforeFull, doAddRecoveredMessage, gc, getActiveMQDestination, getConsumerInfo, getContext, getCursorMemoryHighWaterMark, getInFlightUsage, getInfo, getObjectName, getSelector, getSelectorExpression, isBrowser, isRecoveryRequired, isSlowConsumer, matches, matches, remove, removeDestination, setCursorMemoryHighWaterMark, setObjectName, setSelector, setSlowConsumer, unmatched
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

matched

protected PendingMessageCursor matched

usageManager

protected final SystemUsage usageManager

dispatchedCounter

protected AtomicLong dispatchedCounter

maxProducersToAudit

protected int maxProducersToAudit

maxAuditDepth

protected int maxAuditDepth

enableAudit

protected boolean enableAudit

audit

protected ActiveMQMessageAudit audit

active

protected boolean active
Constructor Detail

TopicSubscription

public TopicSubscription(Broker broker,
                         ConnectionContext context,
                         ConsumerInfo info,
                         SystemUsage usageManager)
                  throws Exception
Throws:
Exception
Method Detail

init

public void init()
          throws Exception
Throws:
Exception

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.

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

getPendingQueueSize

public int getPendingQueueSize()
Returns:
number of 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 -

toString

public String toString()
Overrides:
toString in class Object

destroy

public void destroy()
Description copied from interface: Subscription
Called when the subscription is destroyed.


getPrefetchSize

public int getPrefetchSize()
Specified by:
getPrefetchSize in interface Subscription
Overrides:
getPrefetchSize in class AbstractSubscription
Returns:
the prefetch size that is configured for the subscription

setPrefetchSize

public void setPrefetchSize(int newSize)
Overrides:
setPrefetchSize in class AbstractSubscription


Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.