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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addConnectionListener
(ConnectionListener listener) protected void
addTargetConnectionFactory
(Object key, ConnectionFactory connectionFactory) Adds the givenConnectionFactory
and associates it with the given lookup key.void
void
void
destroy()
protected abstract Object
Determine the current lookup key.protected ConnectionFactory
Retrieve the current targetConnectionFactory
.getHost()
int
getPort()
Returns theConnectionFactory
bound to given lookup key, or null if one does not exist.boolean
boolean
Return true if publisher confirms are enabled.boolean
Return true if publisher returns are enabled.boolean
removeConnectionListener
(ConnectionListener listener) protected ConnectionFactory
Removes theConnectionFactory
associated with the given lookup key and returns it.void
Close any connection(s) that might be cached by this factory.void
setConsistentConfirmsReturns
(boolean consistentConfirmsReturns) Specify whether to apply a validation enforcing allConnectionFactory.isPublisherConfirms()
andConnectionFactory.isPublisherReturns()
have a consistent value.void
setDefaultTargetConnectionFactory
(ConnectionFactory defaultTargetConnectionFactory) Specify the default targetConnectionFactory
, if any.void
setLenientFallback
(boolean lenientFallback) Specify whether to apply a lenient fallback to the defaultConnectionFactory
if no specificConnectionFactory
could be found for the current lookup key.void
setTargetConnectionFactories
(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, wait
Methods 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
ConnectionFactory
will be used as target if none of the keyedtargetConnectionFactories
match 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 defaultConnectionFactory
if no specificConnectionFactory
could 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 defaultConnectionFactory
in 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 aConnectionFactory
entry 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:ConnectionFactory
Return true if publisher confirms are enabled.- Specified by:
isPublisherConfirms
in interfaceConnectionFactory
- Returns:
- publisherConfirms.
-
isPublisherReturns
public boolean isPublisherReturns()Description copied from interface:ConnectionFactory
Return true if publisher returns are enabled.- Specified by:
isPublisherReturns
in interfaceConnectionFactory
- Returns:
- publisherReturns.
-
afterPropertiesSet
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- Throws:
Exception
-
createConnection
- Specified by:
createConnection
in interfaceConnectionFactory
- Throws:
AmqpException
-
determineTargetConnectionFactory
Retrieve the current targetConnectionFactory
. Determines thecurrent lookup key
, performs a lookup in thetargetConnectionFactories
map, falls back to the specifieddefaultTargetConnectionFactory
if necessary.- Returns:
- The connection factory.
- See Also:
-
addConnectionListener
- Specified by:
addConnectionListener
in interfaceConnectionFactory
-
removeConnectionListener
- Specified by:
removeConnectionListener
in interfaceConnectionFactory
-
clearConnectionListeners
public void clearConnectionListeners()- Specified by:
clearConnectionListeners
in interfaceConnectionFactory
-
getHost
- Specified by:
getHost
in interfaceConnectionFactory
-
getPort
public int getPort()- Specified by:
getPort
in interfaceConnectionFactory
-
getVirtualHost
- Specified by:
getVirtualHost
in interfaceConnectionFactory
-
getUsername
- Specified by:
getUsername
in interfaceConnectionFactory
-
getTargetConnectionFactory
Description copied from interface:RoutingConnectionFactory
Returns theConnectionFactory
bound to given lookup key, or null if one does not exist.- Specified by:
getTargetConnectionFactory
in interfaceRoutingConnectionFactory
- Parameters:
key
- The lookup key to which theConnectionFactory
is bound- Returns:
- the
ConnectionFactory
bound 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 givenConnectionFactory
and associates it with the given lookup key.- Parameters:
key
- the lookup key.connectionFactory
- theConnectionFactory
.
-
removeTargetConnectionFactory
Removes theConnectionFactory
associated with the given lookup key and returns it.- Parameters:
key
- the lookup key- Returns:
- the
ConnectionFactory
that 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:
destroy
in interfaceDisposableBean
-
resetConnection
public void resetConnection()Description copied from interface:ConnectionFactory
Close any connection(s) that might be cached by this factory. This does not prevent new connections from being opened.- Specified by:
resetConnection
in interfaceConnectionFactory
-