Class BaseDestination

  • All Implemented Interfaces:
    Destination, org.apache.activemq.command.Message.MessageDestination, org.apache.activemq.Service, org.apache.activemq.thread.Task
    Direct Known Subclasses:
    Queue, Topic

    public abstract class BaseDestination
    extends Object
    implements Destination
    • Field Detail

      • MAX_PAGE_SIZE

        public static final int MAX_PAGE_SIZE
        The maximum number of messages to page in to the destination from persistent storage
        See Also:
        Constant Field Values
      • DEFAULT_INACTIVE_TIMEOUT_BEFORE_GC

        public static final long DEFAULT_INACTIVE_TIMEOUT_BEFORE_GC
        See Also:
        Constant Field Values
      • destination

        protected final org.apache.activemq.command.ActiveMQDestination destination
      • broker

        protected final Broker broker
      • memoryUsage

        protected org.apache.activemq.usage.MemoryUsage memoryUsage
      • lastBlockedProducerWarnTime

        protected long lastBlockedProducerWarnTime
      • blockedProducerWarningInterval

        protected long blockedProducerWarningInterval
      • regionBroker

        protected final Broker regionBroker
      • expireMessagesPeriod

        protected long expireMessagesPeriod
      • cursorMemoryHighWaterMark

        protected int cursorMemoryHighWaterMark
      • storeUsageHighWaterMark

        protected int storeUsageHighWaterMark
      • scheduler

        protected final org.apache.activemq.thread.Scheduler scheduler
    • Method Detail

      • initialize

        public void initialize()
                        throws Exception
        initialize the destination
        Throws:
        Exception
      • isProducerFlowControl

        public boolean isProducerFlowControl()
        Specified by:
        isProducerFlowControl in interface Destination
        Returns:
        the producerFlowControl
      • setProducerFlowControl

        public void setProducerFlowControl​(boolean producerFlowControl)
        Specified by:
        setProducerFlowControl in interface Destination
        Parameters:
        producerFlowControl - the producerFlowControl to set
      • setBlockedProducerWarningInterval

        public void setBlockedProducerWarningInterval​(long blockedProducerWarningInterval)
        Set's the interval at which warnings about producers being blocked by resource usage will be triggered. Values of 0 or less will disable warnings
        Specified by:
        setBlockedProducerWarningInterval in interface Destination
        Parameters:
        blockedProducerWarningInterval - the interval at which warning about blocked producers will be triggered.
      • getBlockedProducerWarningInterval

        public long getBlockedProducerWarningInterval()
        Specified by:
        getBlockedProducerWarningInterval in interface Destination
        Returns:
        the interval at which warning about blocked producers will be triggered.
      • setMaxProducersToAudit

        public void setMaxProducersToAudit​(int maxProducersToAudit)
        Specified by:
        setMaxProducersToAudit in interface Destination
        Parameters:
        maxProducersToAudit - the maxProducersToAudit to set
      • getMaxAuditDepth

        public int getMaxAuditDepth()
        Specified by:
        getMaxAuditDepth in interface Destination
        Returns:
        the maxAuditDepth
      • setMaxAuditDepth

        public void setMaxAuditDepth​(int maxAuditDepth)
        Specified by:
        setMaxAuditDepth in interface Destination
        Parameters:
        maxAuditDepth - the maxAuditDepth to set
      • isEnableAudit

        public boolean isEnableAudit()
        Specified by:
        isEnableAudit in interface Destination
        Returns:
        the enableAudit
      • setEnableAudit

        public void setEnableAudit​(boolean enableAudit)
        Specified by:
        setEnableAudit in interface Destination
        Parameters:
        enableAudit - the enableAudit to set
      • getMemoryUsage

        public final org.apache.activemq.usage.MemoryUsage getMemoryUsage()
        Specified by:
        getMemoryUsage in interface Destination
        Specified by:
        getMemoryUsage in interface org.apache.activemq.command.Message.MessageDestination
      • setMemoryUsage

        public void setMemoryUsage​(org.apache.activemq.usage.MemoryUsage memoryUsage)
        Specified by:
        setMemoryUsage in interface Destination
      • getActiveMQDestination

        public org.apache.activemq.command.ActiveMQDestination getActiveMQDestination()
        Specified by:
        getActiveMQDestination in interface Destination
      • getMaxExpirePageSize

        public int getMaxExpirePageSize()
      • setMaxExpirePageSize

        public void setMaxExpirePageSize​(int maxPageSize)
      • setExpireMessagesPeriod

        public void setExpireMessagesPeriod​(long expireMessagesPeriod)
      • getExpireMessagesPeriod

        public long getExpireMessagesPeriod()
      • setUseCache

        public void setUseCache​(boolean useCache)
        Specified by:
        setUseCache in interface Destination
      • getMinimumMessageSize

        public int getMinimumMessageSize()
        Specified by:
        getMinimumMessageSize in interface Destination
        Specified by:
        getMinimumMessageSize in interface org.apache.activemq.command.Message.MessageDestination
      • isLazyDispatch

        public boolean isLazyDispatch()
        Specified by:
        isLazyDispatch in interface Destination
        Returns:
        true if lazyDispatch is enabled
      • setLazyDispatch

        public void setLazyDispatch​(boolean lazyDispatch)
        Description copied from interface: Destination
        set the lazy dispatch - default is false
        Specified by:
        setLazyDispatch in interface Destination
      • getDestinationSequenceId

        protected long getDestinationSequenceId()
      • isAdvisoryForSlowConsumers

        public boolean isAdvisoryForSlowConsumers()
        Returns:
        the advisoryForSlowConsumers
      • setAdvisoryForSlowConsumers

        public void setAdvisoryForSlowConsumers​(boolean advisoryForSlowConsumers)
        Parameters:
        advisoryForSlowConsumers - the advisoryForSlowConsumers to set
      • isAdvisoryForDiscardingMessages

        public boolean isAdvisoryForDiscardingMessages()
        Returns:
        the advisoryForDiscardingMessages
      • setAdvisoryForDiscardingMessages

        public void setAdvisoryForDiscardingMessages​(boolean advisoryForDiscardingMessages)
        Parameters:
        advisoryForDiscardingMessages - the advisoryForDiscardingMessages to set
      • isAdvisoryWhenFull

        public boolean isAdvisoryWhenFull()
        Returns:
        the advisoryWhenFull
      • setAdvisoryWhenFull

        public void setAdvisoryWhenFull​(boolean advisoryWhenFull)
        Parameters:
        advisoryWhenFull - the advisoryWhenFull to set
      • isAdvisoryForDelivery

        public boolean isAdvisoryForDelivery()
        Returns:
        the advisoryForDelivery
      • setAdvisoryForDelivery

        public void setAdvisoryForDelivery​(boolean advisoryForDelivery)
        Parameters:
        advisoryForDelivery - the advisoryForDelivery to set
      • isAdvisoryForConsumed

        public boolean isAdvisoryForConsumed()
        Returns:
        the advisoryForConsumed
      • setAdvisoryForConsumed

        public void setAdvisoryForConsumed​(boolean advisoryForConsumed)
        Parameters:
        advisoryForConsumed - the advisoryForConsumed to set
      • isAdvisoryForFastProducers

        public boolean isAdvisoryForFastProducers()
        Returns:
        the advisdoryForFastProducers
      • setAdvisoryForFastProducers

        public void setAdvisoryForFastProducers​(boolean advisoryForFastProducers)
        Parameters:
        advisoryForFastProducers - the advisdoryForFastProducers to set
      • isSendAdvisoryIfNoConsumers

        public boolean isSendAdvisoryIfNoConsumers()
      • setSendAdvisoryIfNoConsumers

        public void setSendAdvisoryIfNoConsumers​(boolean sendAdvisoryIfNoConsumers)
      • isIncludeBodyForAdvisory

        public boolean isIncludeBodyForAdvisory()
      • setIncludeBodyForAdvisory

        public void setIncludeBodyForAdvisory​(boolean includeBodyForAdvisory)
      • setDeadLetterStrategy

        public void setDeadLetterStrategy​(DeadLetterStrategy deadLetterStrategy)
        set the dead letter strategy
        Parameters:
        deadLetterStrategy -
      • messageConsumed

        public void messageConsumed​(ConnectionContext context,
                                    org.apache.activemq.broker.region.MessageReference messageReference)
        called when message is consumed
        Specified by:
        messageConsumed in interface Destination
        Parameters:
        context -
        messageReference -
      • messageDelivered

        public void messageDelivered​(ConnectionContext context,
                                     org.apache.activemq.broker.region.MessageReference messageReference)
        Called when message is delivered to the broker
        Specified by:
        messageDelivered in interface Destination
        Parameters:
        context -
        messageReference -
      • messageDiscarded

        public void messageDiscarded​(ConnectionContext context,
                                     Subscription sub,
                                     org.apache.activemq.broker.region.MessageReference messageReference)
        Called when a message is discarded - e.g. running low on memory This will happen only if the policy is enabled - e.g. non durable topics
        Specified by:
        messageDiscarded in interface Destination
        Parameters:
        context -
        messageReference -
      • fastProducer

        public void fastProducer​(ConnectionContext context,
                                 org.apache.activemq.command.ProducerInfo producerInfo)
        Called to notify a producer is too fast
        Specified by:
        fastProducer in interface Destination
        Parameters:
        context -
        producerInfo -
      • isFull

        public void isFull​(ConnectionContext context,
                           org.apache.activemq.usage.Usage<?> usage)
        Called when a Usage reaches a limit
        Specified by:
        isFull in interface Destination
        Parameters:
        context -
        usage -
      • onMessageWithNoConsumers

        protected void onMessageWithNoConsumers​(ConnectionContext context,
                                                org.apache.activemq.command.Message msg)
                                         throws Exception
        Provides a hook to allow messages with no consumer to be processed in some way - such as to send to a dead letter queue or something..
        Throws:
        Exception
      • processDispatchNotification

        public void processDispatchNotification​(org.apache.activemq.command.MessageDispatchNotification messageDispatchNotification)
                                         throws Exception
        Description copied from interface: Destination
        called on Queues in slave mode to allow dispatch to follow subscription choice of master
        Specified by:
        processDispatchNotification in interface Destination
        Throws:
        Exception
      • getStoreUsageHighWaterMark

        public final int getStoreUsageHighWaterMark()
      • setStoreUsageHighWaterMark

        public void setStoreUsageHighWaterMark​(int storeUsageHighWaterMark)
      • isFlowControlLogRequired

        protected boolean isFlowControlLogRequired()
      • getLog

        protected abstract org.slf4j.Logger getLog()
      • setSlowConsumerStrategy

        public void setSlowConsumerStrategy​(SlowConsumerStrategy slowConsumerStrategy)
      • setPrioritizedMessages

        public void setPrioritizedMessages​(boolean prioritizedMessages)
      • setInactiveTimeoutBeforeGC

        public void setInactiveTimeoutBeforeGC​(long inactiveTimeoutBeforeGC)
        Parameters:
        inactiveTimeoutBeforeGC - the inactiveTimeoutBeforeGC to set
      • isGcIfInactive

        public boolean isGcIfInactive()
        Returns:
        the gcIfInactive
      • setGcIfInactive

        public void setGcIfInactive​(boolean gcIfInactive)
        Parameters:
        gcIfInactive - the gcIfInactive to set
      • setGcWithNetworkConsumers

        public void setGcWithNetworkConsumers​(boolean gcWithNetworkConsumers)
        Indicate if it is ok to gc destinations that have only network consumers
        Parameters:
        gcWithNetworkConsumers -
      • isGcWithNetworkConsumers

        public boolean isGcWithNetworkConsumers()
      • markForGC

        public void markForGC​(long timeStamp)
        Specified by:
        markForGC in interface Destination
      • setReduceMemoryFootprint

        public void setReduceMemoryFootprint​(boolean reduceMemoryFootprint)
      • isReduceMemoryFootprint

        public boolean isReduceMemoryFootprint()
      • getOptimizeMessageStoreInFlightLimit

        public int getOptimizeMessageStoreInFlightLimit()
      • setOptimizeMessageStoreInFlightLimit

        public void setOptimizeMessageStoreInFlightLimit​(int optimizeMessageStoreInFlightLimit)
      • hasRegularConsumers

        protected boolean hasRegularConsumers​(List<Subscription> consumers)
      • convertToNonRangedAck

        protected org.apache.activemq.command.MessageAck convertToNonRangedAck​(org.apache.activemq.command.MessageAck ack,
                                                                               org.apache.activemq.broker.region.MessageReference node)
      • isDLQ

        protected boolean isDLQ()
      • setPersistJMSRedelivered

        public void setPersistJMSRedelivered​(boolean persistJMSRedelivered)
      • isPersistJMSRedelivered

        public boolean isPersistJMSRedelivered()