Class LocalizedQueueConnectionFactory
java.lang.Object
org.springframework.amqp.rabbit.connection.LocalizedQueueConnectionFactory
- All Implemented Interfaces:
ConnectionFactory
,RoutingConnectionFactory
,DisposableBean
,Lifecycle
,Phased
,SmartLifecycle
public class LocalizedQueueConnectionFactory
extends Object
implements ConnectionFactory, RoutingConnectionFactory, DisposableBean, SmartLifecycle
A
RoutingConnectionFactory
that determines the node on which a queue is located and
returns a factory that connects directly to that node.
The RabbitMQ management plugin is called over REST to determine the node and the corresponding
address for that node is injected into the connection factory.
A single instance of each connection factory is retained in a cache.
If the location cannot be determined, the default connection factory is returned. This connection
factory is typically configured to connect to all the servers in a fail-over mode.
getTargetConnectionFactory(Object)
is invoked by the
SimpleMessageListenerContainer
, when establishing a connection, with the lookup key having
the format '[queueName]'
.
All ConnectionFactory
methods delegate to the default
- Since:
- 1.2
- Author:
- Gary Russell
-
Field Summary
Fields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE
-
Constructor Summary
ConstructorDescriptionLocalizedQueueConnectionFactory
(ConnectionFactory defaultConnectionFactory, String[] addresses, String[] adminUris, String[] nodes, String vhost, String username, String password, boolean useSSL, String keyStore, String trustStore, String keyStorePassPhrase, String trustStorePassPhrase) LocalizedQueueConnectionFactory
(ConnectionFactory defaultConnectionFactory, String[] addresses, String[] adminUris, String[] nodes, String vhost, String username, String password, boolean useSSL, Resource sslPropertiesLocation) LocalizedQueueConnectionFactory
(ConnectionFactory defaultConnectionFactory, Map<String, String> nodeToAddress, String[] adminUris, String vhost, String username, String password, boolean useSSL, String keyStore, String trustStore, String keyStorePassPhrase, String trustStorePassPhrase) LocalizedQueueConnectionFactory
(ConnectionFactory defaultConnectionFactory, Map<String, String> nodeToAddress, String[] adminUris, String vhost, String username, String password, boolean useSSL, Resource sslPropertiesLocation) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addConnectionListener
(ConnectionListener listener) void
protected ConnectionFactory
createConnectionFactory
(String address, String node) Create a dedicated connection factory for the address.void
destroy()
getHost()
int
getPhase()
int
getPort()
Returns theConnectionFactory
bound to given lookup key, or null if one does not exist.boolean
boolean
removeConnectionListener
(ConnectionListener listener) void
Close any connection(s) that might be cached by this factory.void
setNodeLocator
(NodeLocator<?> nodeLocator) Set aNodeLocator
to use to find the node address for the leader.void
start()
void
stop()
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, isPublisherConfirms, isPublisherReturns, isSimplePublisherConfirms
Methods inherited from interface org.springframework.context.SmartLifecycle
isAutoStartup, stop
-
Constructor Details
-
LocalizedQueueConnectionFactory
public LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory, Map<String, String> nodeToAddress, String[] adminUris, String vhost, String username, String password, boolean useSSL, Resource sslPropertiesLocation) - Parameters:
defaultConnectionFactory
- the fallback connection factory to use if the queue can't be located.nodeToAddress
- a Map of node to address: (rabbit@server1 : server1:5672)adminUris
- the rabbitmq admin addresses (https://host:port, ...) must be the same length as addresses.vhost
- the virtual host.username
- the user name.password
- the password.useSSL
- use SSL.sslPropertiesLocation
- the SSL properties location.
-
LocalizedQueueConnectionFactory
public LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory, Map<String, String> nodeToAddress, String[] adminUris, String vhost, String username, String password, boolean useSSL, String keyStore, String trustStore, String keyStorePassPhrase, String trustStorePassPhrase) - Parameters:
defaultConnectionFactory
- the fallback connection factory to use if the queue can't be located.nodeToAddress
- a Map of node to address: (rabbit@server1 : server1:5672)adminUris
- the rabbitmq admin addresses (https://host:port, ...) must be the same length as addresses.vhost
- the virtual host.username
- the user name.password
- the password.useSSL
- use SSL.keyStore
- the key store resource (e.g. "file:/foo/keystore").trustStore
- the trust store resource (e.g. "file:/foo/truststore").keyStorePassPhrase
- the pass phrase for the key store.trustStorePassPhrase
- the pass phrase for the trust store.
-
LocalizedQueueConnectionFactory
public LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory, String[] addresses, String[] adminUris, String[] nodes, String vhost, String username, String password, boolean useSSL, @Nullable Resource sslPropertiesLocation) - Parameters:
defaultConnectionFactory
- the fallback connection factory to use if the queue can't be located.addresses
- the rabbitmq server addresses (host:port, ...).adminUris
- the rabbitmq admin addresses (https://host:port, ...)nodes
- the rabbitmq nodes corresponding to addresses (rabbit@server1, ...) must be the same length as addresses.vhost
- the virtual host.username
- the user name.password
- the password.useSSL
- use SSL.sslPropertiesLocation
- the SSL properties location.
-
LocalizedQueueConnectionFactory
public LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory, String[] addresses, String[] adminUris, String[] nodes, String vhost, String username, String password, boolean useSSL, String keyStore, String trustStore, String keyStorePassPhrase, String trustStorePassPhrase) - Parameters:
defaultConnectionFactory
- the fallback connection factory to use if the queue can't be located.addresses
- the rabbitmq server addresses (host:port, ...).adminUris
- the rabbitmq admin addresses (https://host:port, ...).nodes
- the rabbitmq nodes corresponding to addresses (rabbit@server1, ...) must be the same length as addresses.vhost
- the virtual host.username
- the user name.password
- the password.useSSL
- use SSL.keyStore
- the key store resource (e.g. "file:/foo/keystore").trustStore
- the trust store resource (e.g. "file:/foo/truststore").keyStorePassPhrase
- the pass phrase for the key store.trustStorePassPhrase
- the pass phrase for the trust store.
-
-
Method Details
-
setNodeLocator
Set aNodeLocator
to use to find the node address for the leader.- Parameters:
nodeLocator
- the locator.- Since:
- 2.4.8
-
createConnection
- Specified by:
createConnection
in interfaceConnectionFactory
- Throws:
AmqpException
-
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
-
getPhase
public int getPhase()- Specified by:
getPhase
in interfacePhased
- Specified by:
getPhase
in interfaceSmartLifecycle
-
start
public void start() -
stop
public void stop() -
isRunning
public boolean isRunning() -
addConnectionListener
- Specified by:
addConnectionListener
in interfaceConnectionFactory
-
removeConnectionListener
- Specified by:
removeConnectionListener
in interfaceConnectionFactory
-
clearConnectionListeners
public void clearConnectionListeners()- Specified by:
clearConnectionListeners
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
-
createConnectionFactory
Create a dedicated connection factory for the address.- Parameters:
address
- the address to which the factory should connect.node
- the node.- Returns:
- the connection factory.
-
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
-
destroy
public void destroy()- Specified by:
destroy
in interfaceDisposableBean
-