Class AbstractRoutingConnectionFactory
- All Implemented Interfaces:
ConnectionFactory,RoutingConnectionFactory,DisposableBean,InitializingBean
- Direct Known Subclasses:
SimpleRoutingConnectionFactory
ConnectionFactory implementation that routes createConnection()
calls to one of various target ConnectionFactories based on a lookup key. The latter is usually
(but not necessarily) determined through some thread-bound context.- Since:
- 1.3
- Author:
- Artem Bilan, Josh Chappelle, Gary Russell, Leonardo Ferreira
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddConnectionListener(ConnectionListener listener) protected voidaddTargetConnectionFactory(Object key, ConnectionFactory connectionFactory) Adds the givenConnectionFactoryand associates it with the given lookup key.voidvoidvoiddestroy()protected abstract ObjectDetermine the current lookup key.protected ConnectionFactoryRetrieve the current targetConnectionFactory.getHost()intgetPort()Returns theConnectionFactorybound to given lookup key, or null if one does not exist.booleanbooleanReturn true if publisher confirms are enabled.booleanReturn true if publisher returns are enabled.booleanremoveConnectionListener(ConnectionListener listener) protected ConnectionFactoryRemoves theConnectionFactoryassociated with the given lookup key and returns it.voidClose any connection(s) that might be cached by this factory.voidsetConsistentConfirmsReturns(boolean consistentConfirmsReturns) Specify whether to apply a validation enforcing allConnectionFactory.isPublisherConfirms()andConnectionFactory.isPublisherReturns()have a consistent value.voidsetDefaultTargetConnectionFactory(ConnectionFactory defaultTargetConnectionFactory) Specify the default targetConnectionFactory, if any.voidsetLenientFallback(boolean lenientFallback) Specify whether to apply a lenient fallback to the defaultConnectionFactoryif no specificConnectionFactorycould be found for the current lookup key.voidsetTargetConnectionFactories(Map<Object, ConnectionFactory> targetConnectionFactories) Specify the map of target ConnectionFactories, with the lookup key as key.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.amqp.rabbit.connection.ConnectionFactory
getPublisherConnectionFactory, isSimplePublisherConfirms
-
Constructor Details
-
AbstractRoutingConnectionFactory
public AbstractRoutingConnectionFactory()
-
-
Method Details
-
setTargetConnectionFactories
Specify the map of target ConnectionFactories, with the lookup key as key.The key can be of arbitrary type; this class implements the generic lookup process only. The concrete key representation will be handled by
determineCurrentLookupKey().- Parameters:
targetConnectionFactories- The target connection factories and lookup keys.
-
setDefaultTargetConnectionFactory
Specify the default targetConnectionFactory, if any.This
ConnectionFactorywill be used as target if none of the keyedtargetConnectionFactoriesmatch thedetermineCurrentLookupKey()current lookup key.- Parameters:
defaultTargetConnectionFactory- The default target connection factory.
-
setLenientFallback
public void setLenientFallback(boolean lenientFallback) Specify whether to apply a lenient fallback to the defaultConnectionFactoryif no specificConnectionFactorycould be found for the current lookup key.Default is "true", accepting lookup keys without a corresponding entry in the
targetConnectionFactories- simply falling back to the defaultConnectionFactoryin that case.Switch this flag to "false" if you would prefer the fallback to only apply if the lookup key was
null. Lookup keys without aConnectionFactoryentry will then lead to anIllegalStateException.- Parameters:
lenientFallback- true to fall back to the default, if specified.- See Also:
-
isLenientFallback
public boolean isLenientFallback() -
isPublisherConfirms
public boolean isPublisherConfirms()Description copied from interface:ConnectionFactoryReturn true if publisher confirms are enabled.- Specified by:
isPublisherConfirmsin interfaceConnectionFactory- Returns:
- publisherConfirms.
-
isPublisherReturns
public boolean isPublisherReturns()Description copied from interface:ConnectionFactoryReturn true if publisher returns are enabled.- Specified by:
isPublisherReturnsin interfaceConnectionFactory- Returns:
- publisherReturns.
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceInitializingBean- Throws:
Exception
-
createConnection
- Specified by:
createConnectionin interfaceConnectionFactory- Throws:
AmqpException
-
determineTargetConnectionFactory
Retrieve the current targetConnectionFactory. Determines thecurrent lookup key, performs a lookup in thetargetConnectionFactoriesmap, falls back to the specifieddefaultTargetConnectionFactoryif necessary.- Returns:
- The connection factory.
- See Also:
-
addConnectionListener
- Specified by:
addConnectionListenerin interfaceConnectionFactory
-
removeConnectionListener
- Specified by:
removeConnectionListenerin interfaceConnectionFactory
-
clearConnectionListeners
public void clearConnectionListeners()- Specified by:
clearConnectionListenersin interfaceConnectionFactory
-
getHost
- Specified by:
getHostin interfaceConnectionFactory
-
getPort
public int getPort()- Specified by:
getPortin interfaceConnectionFactory
-
getVirtualHost
- Specified by:
getVirtualHostin interfaceConnectionFactory
-
getUsername
- Specified by:
getUsernamein interfaceConnectionFactory
-
getTargetConnectionFactory
Description copied from interface:RoutingConnectionFactoryReturns theConnectionFactorybound to given lookup key, or null if one does not exist.- Specified by:
getTargetConnectionFactoryin interfaceRoutingConnectionFactory- Parameters:
key- The lookup key to which theConnectionFactoryis bound- Returns:
- the
ConnectionFactorybound to the given lookup key, or null if one does not exist
-
setConsistentConfirmsReturns
public void setConsistentConfirmsReturns(boolean consistentConfirmsReturns) Specify whether to apply a validation enforcing allConnectionFactory.isPublisherConfirms()andConnectionFactory.isPublisherReturns()have a consistent value.A consistent value means that all ConnectionFactories must have the same value between all
ConnectionFactory.isPublisherConfirms()and the same value between allConnectionFactory.isPublisherReturns().Note that in any case the values between
ConnectionFactory.isPublisherConfirms()andConnectionFactory.isPublisherReturns()don't need to be equals between each other.- Parameters:
consistentConfirmsReturns- true to validate, false to not validate.- Since:
- 2.4.4
-
addTargetConnectionFactory
Adds the givenConnectionFactoryand associates it with the given lookup key.- Parameters:
key- the lookup key.connectionFactory- theConnectionFactory.
-
removeTargetConnectionFactory
Removes theConnectionFactoryassociated with the given lookup key and returns it.- Parameters:
key- the lookup key- Returns:
- the
ConnectionFactorythat was removed
-
determineCurrentLookupKey
Determine the current lookup key. This will typically be implemented to check a thread-bound context.- Returns:
- The lookup key.
-
destroy
public void destroy()- Specified by:
destroyin interfaceDisposableBean
-
resetConnection
public void resetConnection()Description copied from interface:ConnectionFactoryClose any connection(s) that might be cached by this factory. This does not prevent new connections from being opened.- Specified by:
resetConnectionin interfaceConnectionFactory
-