Class DemandForwardingBridgeSupport

    • Field Detail

      • localBroker

        protected final org.apache.activemq.transport.Transport localBroker
      • remoteBroker

        protected final org.apache.activemq.transport.Transport remoteBroker
      • idGenerator

        protected org.apache.activemq.util.IdGenerator idGenerator
      • consumerIdGenerator

        protected final org.apache.activemq.util.LongSequenceGenerator consumerIdGenerator
      • localConnectionInfo

        protected org.apache.activemq.command.ConnectionInfo localConnectionInfo
      • remoteConnectionInfo

        protected org.apache.activemq.command.ConnectionInfo remoteConnectionInfo
      • localSessionInfo

        protected org.apache.activemq.command.SessionInfo localSessionInfo
      • producerInfo

        protected org.apache.activemq.command.ProducerInfo producerInfo
      • remoteBrokerName

        protected String remoteBrokerName
      • localClientId

        protected String localClientId
      • demandConsumerInfo

        protected org.apache.activemq.command.ConsumerInfo demandConsumerInfo
      • demandConsumerDispatched

        protected int demandConsumerDispatched
      • localBridgeStarted

        protected final AtomicBoolean localBridgeStarted
      • remoteBridgeStarted

        protected final AtomicBoolean remoteBridgeStarted
      • localBrokerId

        protected org.apache.activemq.command.BrokerId localBrokerId
      • excludedDestinations

        protected org.apache.activemq.command.ActiveMQDestination[] excludedDestinations
      • dynamicallyIncludedDestinations

        protected org.apache.activemq.command.ActiveMQDestination[] dynamicallyIncludedDestinations
      • staticallyIncludedDestinations

        protected org.apache.activemq.command.ActiveMQDestination[] staticallyIncludedDestinations
      • durableDestinations

        protected org.apache.activemq.command.ActiveMQDestination[] durableDestinations
      • forcedDurableRemoteId

        protected final Set<org.apache.activemq.command.ConsumerId> forcedDurableRemoteId
      • localBrokerPath

        protected final org.apache.activemq.command.BrokerId[] localBrokerPath
      • staticDestinationsLatch

        protected final CountDownLatch staticDestinationsLatch
      • lastConnectSucceeded

        protected final AtomicBoolean lastConnectSucceeded
      • remoteBrokerPath

        protected final org.apache.activemq.command.BrokerId[] remoteBrokerPath
      • remoteBrokerId

        protected org.apache.activemq.command.BrokerId remoteBrokerId
    • Constructor Detail

      • DemandForwardingBridgeSupport

        public DemandForwardingBridgeSupport​(NetworkBridgeConfiguration configuration,
                                             org.apache.activemq.transport.Transport localBroker,
                                             org.apache.activemq.transport.Transport remoteBroker)
    • Method Detail

      • duplexStart

        public void duplexStart​(TransportConnection connection,
                                org.apache.activemq.command.BrokerInfo localBrokerInfo,
                                org.apache.activemq.command.BrokerInfo remoteBrokerInfo)
                         throws Exception
        Throws:
        Exception
      • start

        public void start()
                   throws Exception
        Specified by:
        start in interface org.apache.activemq.Service
        Throws:
        Exception
      • stop

        public void stop()
                  throws Exception
        Specified by:
        stop in interface org.apache.activemq.Service
        Throws:
        Exception
      • triggerStartAsyncNetworkBridgeCreation

        protected void triggerStartAsyncNetworkBridgeCreation()
                                                       throws IOException
        Throws:
        IOException
      • startRemoteBridge

        protected void startRemoteBridge()
                                  throws Exception
        Throws:
        Exception
      • isDirectBridgeConsumer

        protected boolean isDirectBridgeConsumer​(org.apache.activemq.command.ConsumerInfo info)
        Checks whether or not this consumer is a direct bridge network subscription
        Parameters:
        info -
        Returns:
      • isProxyBridgeSubscription

        protected boolean isProxyBridgeSubscription​(String clientId,
                                                    String subName)
      • addProxyNetworkSubscriptionClientId

        protected void addProxyNetworkSubscriptionClientId​(DemandSubscription sub,
                                                           String clientId,
                                                           String subName)
        This scenaior is primarily used for durable sync on broker restarts
        Parameters:
        sub -
        clientId -
        subName -
      • addProxyNetworkSubscriptionBrokerPath

        protected void addProxyNetworkSubscriptionBrokerPath​(DemandSubscription sub,
                                                             org.apache.activemq.command.BrokerId[] path,
                                                             String subName)
        Add a durable remote proxy subscription when we can generate via the BrokerId path This is the most common scenario
        Parameters:
        sub -
        path -
        subName -
      • isProxyNSConsumerBrokerPath

        protected boolean isProxyNSConsumerBrokerPath​(org.apache.activemq.command.ConsumerInfo info)
      • isProxyNSConsumerClientId

        protected boolean isProxyNSConsumerClientId​(String clientId)
      • serviceRemoteCommand

        protected void serviceRemoteCommand​(org.apache.activemq.command.Command command)
      • serviceLocalException

        public void serviceLocalException​(org.apache.activemq.command.MessageDispatch messageDispatch,
                                          Throwable error)
      • getControllingService

        protected org.apache.activemq.Service getControllingService()
      • configureMessage

        protected org.apache.activemq.command.Message configureMessage​(org.apache.activemq.command.MessageDispatch md)
                                                                throws IOException
        Throws:
        IOException
      • serviceLocalCommand

        protected void serviceLocalCommand​(org.apache.activemq.command.Command command)
      • contains

        public static boolean contains​(org.apache.activemq.command.BrokerId[] brokerPath,
                                       org.apache.activemq.command.BrokerId brokerId)
      • appendToBrokerPath

        protected org.apache.activemq.command.BrokerId[] appendToBrokerPath​(org.apache.activemq.command.BrokerId[] brokerPath,
                                                                            org.apache.activemq.command.BrokerId[] pathsToAppend)
      • appendToBrokerPath

        protected org.apache.activemq.command.BrokerId[] appendToBrokerPath​(org.apache.activemq.command.BrokerId[] brokerPath,
                                                                            org.apache.activemq.command.BrokerId idToAppend)
      • isPermissableDestination

        protected boolean isPermissableDestination​(org.apache.activemq.command.ActiveMQDestination destination)
      • isPermissableDestination

        protected boolean isPermissableDestination​(org.apache.activemq.command.ActiveMQDestination destination,
                                                   boolean allowTemporary)
      • setupStaticDestinations

        protected void setupStaticDestinations()
        Subscriptions for these destinations are always created
      • addConsumerInfo

        protected void addConsumerInfo​(org.apache.activemq.command.ConsumerInfo consumerInfo)
                                throws IOException
        Throws:
        IOException
      • getRegionSubscriptions

        protected final Collection<Subscription> getRegionSubscriptions​(org.apache.activemq.command.ActiveMQDestination dest)
      • createDemandSubscription

        protected final DemandSubscription createDemandSubscription​(org.apache.activemq.command.ActiveMQDestination destination,
                                                                    String subscriptionName)
      • removeDemandSubscription

        protected void removeDemandSubscription​(org.apache.activemq.command.ConsumerId id)
                                         throws IOException
        Throws:
        IOException
      • removeDemandSubscriptionByLocalId

        protected boolean removeDemandSubscriptionByLocalId​(org.apache.activemq.command.ConsumerId consumerId)
      • safeWaitUntilStarted

        protected boolean safeWaitUntilStarted()
                                        throws InterruptedException
        Performs a timed wait on the started latch and then checks for disposed before performing another wait each time the the started wait times out.
        Throws:
        InterruptedException
      • createNetworkBridgeFilter

        protected org.apache.activemq.command.NetworkBridgeFilter createNetworkBridgeFilter​(org.apache.activemq.command.ConsumerInfo info)
                                                                                     throws IOException
        Throws:
        IOException
      • addRemoteBrokerToBrokerPath

        protected void addRemoteBrokerToBrokerPath​(org.apache.activemq.command.ConsumerInfo info)
                                            throws IOException
        Throws:
        IOException
      • getRemoteBrokerPath

        protected org.apache.activemq.command.BrokerId[] getRemoteBrokerPath()
      • getDynamicallyIncludedDestinations

        public org.apache.activemq.command.ActiveMQDestination[] getDynamicallyIncludedDestinations()
        Returns:
        Returns the dynamicallyIncludedDestinations.
      • setDynamicallyIncludedDestinations

        public void setDynamicallyIncludedDestinations​(org.apache.activemq.command.ActiveMQDestination[] dynamicallyIncludedDestinations)
        Parameters:
        dynamicallyIncludedDestinations - The dynamicallyIncludedDestinations to set.
      • getExcludedDestinations

        public org.apache.activemq.command.ActiveMQDestination[] getExcludedDestinations()
        Returns:
        Returns the excludedDestinations.
      • setExcludedDestinations

        public void setExcludedDestinations​(org.apache.activemq.command.ActiveMQDestination[] excludedDestinations)
        Parameters:
        excludedDestinations - The excludedDestinations to set.
      • getStaticallyIncludedDestinations

        public org.apache.activemq.command.ActiveMQDestination[] getStaticallyIncludedDestinations()
        Returns:
        Returns the staticallyIncludedDestinations.
      • setStaticallyIncludedDestinations

        public void setStaticallyIncludedDestinations​(org.apache.activemq.command.ActiveMQDestination[] staticallyIncludedDestinations)
        Parameters:
        staticallyIncludedDestinations - The staticallyIncludedDestinations to set.
      • getDurableDestinations

        public org.apache.activemq.command.ActiveMQDestination[] getDurableDestinations()
        Returns:
        Returns the durableDestinations.
      • setDurableDestinations

        public void setDurableDestinations​(org.apache.activemq.command.ActiveMQDestination[] durableDestinations)
        Parameters:
        durableDestinations - The durableDestinations to set.
      • getLocalBroker

        public org.apache.activemq.transport.Transport getLocalBroker()
        Returns:
        Returns the localBroker.
      • getRemoteBroker

        public org.apache.activemq.transport.Transport getRemoteBroker()
        Returns:
        Returns the remoteBroker.
      • isCreatedByDuplex

        public boolean isCreatedByDuplex()
        Returns:
        the createdByDuplex
      • setCreatedByDuplex

        public void setCreatedByDuplex​(boolean createdByDuplex)
        Parameters:
        createdByDuplex - the createdByDuplex to set
      • getRemoteAddress

        public String getRemoteAddress()
        Specified by:
        getRemoteAddress in interface NetworkBridge
        Returns:
        the network address of the remote broker connection.
      • getLocalAddress

        public String getLocalAddress()
        Specified by:
        getLocalAddress in interface NetworkBridge
        Returns:
        the network address of the local broker connection.
      • getRemoteBrokerName

        public String getRemoteBrokerName()
        Specified by:
        getRemoteBrokerName in interface NetworkBridge
        Returns:
        the name of the remote broker this bridge is connected to.
      • getRemoteBrokerId

        public String getRemoteBrokerId()
        Specified by:
        getRemoteBrokerId in interface NetworkBridge
        Returns:
        the id of the remote broker this bridge is connected to.
      • getLocalBrokerName

        public String getLocalBrokerName()
        Specified by:
        getLocalBrokerName in interface NetworkBridge
        Returns:
        the name of the local broker this bridge is connected to.
      • getDequeueCounter

        public long getDequeueCounter()
        Specified by:
        getDequeueCounter in interface NetworkBridge
        Returns:
        the current number of dequeues this bridge has.
      • getEnqueueCounter

        public long getEnqueueCounter()
        Specified by:
        getEnqueueCounter in interface NetworkBridge
        Returns:
        the current number of enqueues this bridge has.
      • isDuplex

        protected boolean isDuplex()
      • setMbeanObjectName

        public void setMbeanObjectName​(ObjectName objectName)
        Specified by:
        setMbeanObjectName in interface NetworkBridge
        Parameters:
        objectName - The ObjectName assigned to this bridge in the MBean server.
      • serviceOutbound

        protected void serviceOutbound​(org.apache.activemq.command.Message message)
      • serviceInboundMessage

        protected void serviceInboundMessage​(org.apache.activemq.command.Message message)
      • canDuplexDispatch

        protected boolean canDuplexDispatch​(org.apache.activemq.command.Message message)
      • getStoredSequenceIdForMessage

        protected long getStoredSequenceIdForMessage​(org.apache.activemq.command.MessageId messageId)
      • configureConsumerPrefetch

        protected void configureConsumerPrefetch​(org.apache.activemq.command.ConsumerInfo consumerInfo)