Package org.apache.activemq.network
Class DemandForwardingBridgeSupport
java.lang.Object
org.apache.activemq.network.DemandForwardingBridgeSupport
- All Implemented Interfaces:
BrokerServiceAware,NetworkBridge,org.apache.activemq.Service
- Direct Known Subclasses:
CompositeDemandForwardingBridge,DemandForwardingBridge
public abstract class DemandForwardingBridgeSupport
extends Object
implements NetworkBridge, BrokerServiceAware
A useful base class for implementing demand forwarding bridges.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final AtomicBooleanprotected BrokerServiceprotected final ConcurrentMap<org.apache.activemq.command.ConsumerId,Set<org.apache.activemq.command.ConsumerId>> protected final ConcurrentMap<org.apache.activemq.command.SubscriptionInfo,Set<org.apache.activemq.command.SubscriptionInfo>> protected NetworkBridgeConfigurationprotected final org.apache.activemq.util.LongSequenceGeneratorprotected final NetworkBridgeFilterFactoryprotected intprotected org.apache.activemq.command.ConsumerInfoprotected final AtomicBooleanprotected static final Stringprotected org.apache.activemq.command.ActiveMQDestination[]protected org.apache.activemq.command.ActiveMQDestination[]protected org.apache.activemq.command.ActiveMQDestination[]protected final Set<org.apache.activemq.command.ConsumerId>protected org.apache.activemq.util.IdGeneratorprotected final AtomicBooleanprotected final AtomicBooleanprotected final org.apache.activemq.transport.Transportprotected org.apache.activemq.command.BrokerIdprotected final org.apache.activemq.command.BrokerId[]protected Stringprotected org.apache.activemq.command.ConnectionInfoprotected org.apache.activemq.command.SessionInfoprotected final CountDownLatchprotected final NetworkBridgeStatisticsprotected org.apache.activemq.command.ProducerInfoprotected final AtomicBooleanprotected final org.apache.activemq.transport.Transportprotected org.apache.activemq.command.BrokerIdprotected Stringprotected final org.apache.activemq.command.BrokerId[]protected org.apache.activemq.command.ConnectionInfoprotected final CountDownLatchprotected org.apache.activemq.command.ActiveMQDestination[]protected final CountDownLatchprotected final ConcurrentMap<org.apache.activemq.command.ConsumerId,DemandSubscription> protected final ConcurrentMap<org.apache.activemq.command.ConsumerId,DemandSubscription> -
Constructor Summary
ConstructorsConstructorDescriptionDemandForwardingBridgeSupport(NetworkBridgeConfiguration configuration, org.apache.activemq.transport.Transport localBroker, org.apache.activemq.transport.Transport remoteBroker) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddConsumerInfo(org.apache.activemq.command.ConsumerInfo consumerInfo) protected voidaddProxyNetworkSubscriptionBrokerPath(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 scenarioprotected voidaddProxyNetworkSubscriptionClientId(DemandSubscription sub, String clientId, String subName) This scenaior is primarily used for durable sync on broker restartsprotected voidaddRemoteBrokerToBrokerPath(org.apache.activemq.command.ConsumerInfo info) protected voidprotected org.apache.activemq.command.BrokerId[]appendToBrokerPath(org.apache.activemq.command.BrokerId[] brokerPath, org.apache.activemq.command.BrokerId idToAppend) protected org.apache.activemq.command.BrokerId[]appendToBrokerPath(org.apache.activemq.command.BrokerId[] brokerPath, org.apache.activemq.command.BrokerId[] pathsToAppend) protected booleancanDuplexDispatch(org.apache.activemq.command.Message message) protected voidconfigureConsumerPrefetch(org.apache.activemq.command.ConsumerInfo consumerInfo) protected voidconfigureDemandSubscription(org.apache.activemq.command.ConsumerInfo info, DemandSubscription sub) protected org.apache.activemq.command.MessageconfigureMessage(org.apache.activemq.command.MessageDispatch md) static booleancontains(org.apache.activemq.command.BrokerId[] brokerPath, org.apache.activemq.command.BrokerId brokerId) protected final DemandSubscriptioncreateDemandSubscription(org.apache.activemq.command.ActiveMQDestination destination, String subscriptionName, org.apache.activemq.command.BrokerId[] brokerPath) protected DemandSubscriptioncreateDemandSubscription(org.apache.activemq.command.ConsumerInfo info) protected org.apache.activemq.command.NetworkBridgeFiltercreateNetworkBridgeFilter(org.apache.activemq.command.ConsumerInfo info) protected DemandSubscriptiondoCreateDemandSubscription(org.apache.activemq.command.ConsumerInfo info) voidduplexStart(TransportConnection connection, org.apache.activemq.command.BrokerInfo localBrokerInfo, org.apache.activemq.command.BrokerInfo remoteBrokerInfo) protected org.apache.activemq.Servicelongorg.apache.activemq.command.ActiveMQDestination[]org.apache.activemq.command.ActiveMQDestination[]longorg.apache.activemq.command.ActiveMQDestination[]org.apache.activemq.transport.TransportConcurrentMap<org.apache.activemq.command.ConsumerId,DemandSubscription> protected final Collection<Subscription>getRegionSubscriptions(org.apache.activemq.command.ActiveMQDestination dest) org.apache.activemq.transport.Transportprotected org.apache.activemq.command.BrokerId[]org.apache.activemq.command.ActiveMQDestination[]protected longgetStoredSequenceIdForMessage(org.apache.activemq.command.MessageId messageId) booleanprotected booleanisDuplex()protected booleanisPermissableDestination(org.apache.activemq.command.ActiveMQDestination destination) protected booleanisPermissableDestination(org.apache.activemq.command.ActiveMQDestination destination, boolean allowTemporary) protected booleanisProxyBridgeSubscription(String clientId, String subName) protected booleanisProxyNSConsumerBrokerPath(org.apache.activemq.command.ConsumerInfo info) protected booleanisProxyNSConsumerClientId(String clientId) protected voidremoveDemandSubscription(org.apache.activemq.command.ConsumerId id) protected booleanremoveDemandSubscriptionByLocalId(org.apache.activemq.command.ConsumerId consumerId) protected voidvoidprotected booleanPerforms a timed wait on the started latch and then checks for disposed before performing another wait each time the the started wait times out.protected voidserviceInboundMessage(org.apache.activemq.command.Message message) protected voidserviceLocalCommand(org.apache.activemq.command.Command command) voidserviceLocalException(Throwable error) Service an exception received from the Local Broker connection.voidserviceLocalException(org.apache.activemq.command.MessageDispatch messageDispatch, Throwable error) protected voidserviceOutbound(org.apache.activemq.command.Message message) protected voidserviceRemoteCommand(org.apache.activemq.command.Command command) voidserviceRemoteException(Throwable error) Service an exception received from the Remote Broker connection.voidsetBrokerService(BrokerService brokerService) voidsetCreatedByDuplex(boolean createdByDuplex) voidsetDurableDestinations(org.apache.activemq.command.ActiveMQDestination[] durableDestinations) voidsetDynamicallyIncludedDestinations(org.apache.activemq.command.ActiveMQDestination[] dynamicallyIncludedDestinations) voidsetExcludedDestinations(org.apache.activemq.command.ActiveMQDestination[] excludedDestinations) voidsetMbeanObjectName(ObjectName objectName) voidSet the NetworkBridgeFailedListenervoidsetStaticallyIncludedDestinations(org.apache.activemq.command.ActiveMQDestination[] staticallyIncludedDestinations) protected voidSubscriptions for these destinations are always createdvoidstart()protected voidvoidstop()protected void
-
Field Details
-
DURABLE_SUB_PREFIX
- See Also:
-
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
-
localClientId
-
demandConsumerInfo
protected org.apache.activemq.command.ConsumerInfo demandConsumerInfo -
demandConsumerDispatched
protected int demandConsumerDispatched -
localBridgeStarted
-
remoteBridgeStarted
-
bridgeFailed
-
disposed
-
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 -
subscriptionMapByLocalId
protected final ConcurrentMap<org.apache.activemq.command.ConsumerId,DemandSubscription> subscriptionMapByLocalId -
subscriptionMapByRemoteId
protected final ConcurrentMap<org.apache.activemq.command.ConsumerId,DemandSubscription> subscriptionMapByRemoteId -
forcedDurableRemoteId
-
compositeConsumerIds
protected final ConcurrentMap<org.apache.activemq.command.ConsumerId,Set<org.apache.activemq.command.ConsumerId>> compositeConsumerIds -
compositeSubscriptions
protected final ConcurrentMap<org.apache.activemq.command.SubscriptionInfo,Set<org.apache.activemq.command.SubscriptionInfo>> compositeSubscriptions -
localBrokerPath
protected final org.apache.activemq.command.BrokerId[] localBrokerPath -
startedLatch
-
localStartedLatch
-
staticDestinationsLatch
-
lastConnectSucceeded
-
configuration
-
defaultFilterFactory
-
remoteBrokerPath
protected final org.apache.activemq.command.BrokerId[] remoteBrokerPath -
remoteBrokerId
protected org.apache.activemq.command.BrokerId remoteBrokerId -
networkBridgeStatistics
-
brokerService
-
-
Constructor Details
-
DemandForwardingBridgeSupport
public DemandForwardingBridgeSupport(NetworkBridgeConfiguration configuration, org.apache.activemq.transport.Transport localBroker, org.apache.activemq.transport.Transport remoteBroker)
-
-
Method Details
-
duplexStart
public void duplexStart(TransportConnection connection, org.apache.activemq.command.BrokerInfo localBrokerInfo, org.apache.activemq.command.BrokerInfo remoteBrokerInfo) throws Exception - Throws:
Exception
-
start
- Specified by:
startin interfaceorg.apache.activemq.Service- Throws:
Exception
-
stop
- Specified by:
stopin interfaceorg.apache.activemq.Service- Throws:
Exception
-
triggerStartAsyncNetworkBridgeCreation
- Throws:
IOException
-
startRemoteBridge
- Throws:
Exception
-
serviceRemoteException
Description copied from interface:NetworkBridgeService an exception received from the Remote Broker connection.- Specified by:
serviceRemoteExceptionin interfaceNetworkBridge
-
isProxyBridgeSubscription
-
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
-
serviceRemoteCommand
protected void serviceRemoteCommand(org.apache.activemq.command.Command command) -
serviceLocalException
Description copied from interface:NetworkBridgeService an exception received from the Local Broker connection.- Specified by:
serviceLocalExceptionin interfaceNetworkBridge
-
serviceLocalException
public void serviceLocalException(org.apache.activemq.command.MessageDispatch messageDispatch, Throwable error) -
getControllingService
protected org.apache.activemq.Service getControllingService() -
addSubscription
- Throws:
IOException
-
removeSubscription
- Throws:
IOException
-
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 DemandSubscription createDemandSubscription(org.apache.activemq.command.ConsumerInfo info) throws IOException - Throws:
IOException
-
doCreateDemandSubscription
protected DemandSubscription doCreateDemandSubscription(org.apache.activemq.command.ConsumerInfo info) throws IOException - Throws:
IOException
-
createDemandSubscription
protected final DemandSubscription createDemandSubscription(org.apache.activemq.command.ActiveMQDestination destination, String subscriptionName, org.apache.activemq.command.BrokerId[] brokerPath) -
configureDemandSubscription
protected void configureDemandSubscription(org.apache.activemq.command.ConsumerInfo info, DemandSubscription sub) throws IOException - Throws:
IOException
-
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
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) -
getRemoteBrokerPath
protected org.apache.activemq.command.BrokerId[] getRemoteBrokerPath() -
setNetworkBridgeListener
Description copied from interface:NetworkBridgeSet the NetworkBridgeFailedListener- Specified by:
setNetworkBridgeListenerin interfaceNetworkBridge
-
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
- Specified by:
getRemoteAddressin interfaceNetworkBridge- Returns:
- the network address of the remote broker connection.
-
getLocalAddress
- Specified by:
getLocalAddressin interfaceNetworkBridge- Returns:
- the network address of the local broker connection.
-
getRemoteBrokerName
- Specified by:
getRemoteBrokerNamein interfaceNetworkBridge- Returns:
- the name of the remote broker this bridge is connected to.
-
getRemoteBrokerId
- Specified by:
getRemoteBrokerIdin interfaceNetworkBridge- Returns:
- the id of the remote broker this bridge is connected to.
-
getLocalBrokerName
- Specified by:
getLocalBrokerNamein interfaceNetworkBridge- Returns:
- the name of the local broker this bridge is connected to.
-
getDequeueCounter
public long getDequeueCounter()- Specified by:
getDequeueCounterin interfaceNetworkBridge- Returns:
- the current number of dequeues this bridge has.
-
getEnqueueCounter
public long getEnqueueCounter()- Specified by:
getEnqueueCounterin interfaceNetworkBridge- Returns:
- the current number of enqueues this bridge has.
-
getNetworkBridgeStatistics
- Specified by:
getNetworkBridgeStatisticsin interfaceNetworkBridge- Returns:
- the statistics for this NetworkBridge
-
isDuplex
protected boolean isDuplex() -
getLocalSubscriptionMap
public ConcurrentMap<org.apache.activemq.command.ConsumerId,DemandSubscription> getLocalSubscriptionMap() -
setBrokerService
- Specified by:
setBrokerServicein interfaceBrokerServiceAware
-
setMbeanObjectName
- Specified by:
setMbeanObjectNamein interfaceNetworkBridge- Parameters:
objectName- The ObjectName assigned to this bridge in the MBean server.
-
getMbeanObjectName
- Specified by:
getMbeanObjectNamein interfaceNetworkBridge- Returns:
- the MBean name used to identify this bridge in the MBean server.
-
resetStats
public void resetStats()- Specified by:
resetStatsin interfaceNetworkBridge
-
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)
-