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 Details

    • matched

      protected PendingMessageCursor matched
    • usageManager

      protected final SystemUsage usageManager
    • maxProducersToAudit

      protected int maxProducersToAudit
    • maxAuditDepth

      protected int maxAuditDepth
    • enableAudit

      protected boolean enableAudit
    • audit

      protected org.apache.activemq.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
    • currentDispatchedCount

      protected final AtomicInteger currentDispatchedCount
  • Constructor Details

  • Method Details

    • init

      public void init() throws Exception
      Throws:
      Exception
    • add

      public void add(org.apache.activemq.broker.region.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(org.apache.activemq.command.MessageDispatchNotification mdn)
      Description copied from interface: Subscription
      Used by a Slave Broker to update dispatch infomation
    • acknowledge

      public void acknowledge(ConnectionContext context, org.apache.activemq.command.MessageAck ack) throws Exception
      Description copied from interface: Subscription
      Used when client acknowledge receipt of dispatched message.
      Specified by:
      acknowledge in interface Subscription
      Overrides:
      acknowledge in class AbstractSubscription
      Throws:
      IOException
      Exception
    • pullMessage

      public org.apache.activemq.command.Response pullMessage(ConnectionContext context, org.apache.activemq.command.MessagePull pull) throws Exception
      Description copied from interface: Subscription
      Allows a consumer to pull a message on demand
      Throws:
      Exception
    • remove

      public List<org.apache.activemq.broker.region.MessageReference> remove(ConnectionContext context, Destination destination) throws Exception
      Description copied from interface: Subscription
      The subscription will be no longer be receiving messages from the destination.
      Specified by:
      remove in interface Subscription
      Overrides:
      remove in class AbstractSubscription
      Returns:
      a list of un-acked messages that were added to the subscription.
      Throws:
      Exception
    • countBeforeFull

      public int countBeforeFull()
      Specified by:
      countBeforeFull in interface Subscription
      Overrides:
      countBeforeFull in class AbstractSubscription
      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 -
    • 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
    • isUseTopicSubscriptionInflightStats

      public boolean isUseTopicSubscriptionInflightStats()
    • setUseTopicSubscriptionInflightStats

      public void setUseTopicSubscriptionInflightStats(boolean useTopicSubscriptionInflightStats)