public class LocalizedQueueConnectionFactory extends Object implements ConnectionFactory, RoutingConnectionFactory, DisposableBean
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
| Constructor and Description |
|---|
LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory,
Map<String,String> nodeToAddress,
String[] adminUris,
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,
String[] addresses,
String[] adminUris,
String[] nodes,
String vhost,
String username,
String password,
boolean useSSL,
Resource sslPropertiesLocation) |
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) |
| Modifier and Type | Method and Description |
|---|---|
void |
addConnectionListener(ConnectionListener listener) |
void |
clearConnectionListeners() |
protected com.rabbitmq.http.client.Client |
createClient(String adminUri,
String username,
String password)
Create a client instance.
|
Connection |
createConnection() |
protected ConnectionFactory |
createConnectionFactory(String address,
String node)
Create a dedicated connection factory for the address.
|
void |
destroy() |
String |
getHost() |
int |
getPort() |
ConnectionFactory |
getTargetConnectionFactory(Object key)
Returns the
ConnectionFactory bound to given lookup key, or null if one does not exist. |
String |
getUsername() |
String |
getVirtualHost() |
boolean |
removeConnectionListener(ConnectionListener listener) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetPublisherConnectionFactory, isPublisherConfirms, isPublisherReturns, isSimplePublisherConfirmspublic LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory, Map<String,String> nodeToAddress, String[] adminUris, String vhost, String username, String password, boolean useSSL, Resource sslPropertiesLocation)
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.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)
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.public LocalizedQueueConnectionFactory(ConnectionFactory defaultConnectionFactory, String[] addresses, String[] adminUris, String[] nodes, String vhost, String username, String password, boolean useSSL, @Nullable Resource sslPropertiesLocation)
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.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)
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.public Connection createConnection() throws AmqpException
createConnection in interface ConnectionFactoryAmqpExceptionpublic String getHost()
getHost in interface ConnectionFactorypublic int getPort()
getPort in interface ConnectionFactorypublic String getVirtualHost()
getVirtualHost in interface ConnectionFactorypublic String getUsername()
getUsername in interface ConnectionFactorypublic void addConnectionListener(ConnectionListener listener)
addConnectionListener in interface ConnectionFactorypublic boolean removeConnectionListener(ConnectionListener listener)
removeConnectionListener in interface ConnectionFactorypublic void clearConnectionListeners()
clearConnectionListeners in interface ConnectionFactorypublic ConnectionFactory getTargetConnectionFactory(Object key)
RoutingConnectionFactoryConnectionFactory bound to given lookup key, or null if one does not exist.getTargetConnectionFactory in interface RoutingConnectionFactorykey - The lookup key to which the ConnectionFactory is boundConnectionFactory bound to the given lookup key, or null if one does not existprotected com.rabbitmq.http.client.Client createClient(String adminUri, String username, String password) throws MalformedURLException, URISyntaxException
adminUri - the admin URI.username - the usernamepassword - the password.MalformedURLException - if the URL is malformedURISyntaxException - if there is a syntax error.protected ConnectionFactory createConnectionFactory(String address, String node)
address - the address to which the factory should connect.node - the node.public void destroy()
destroy in interface DisposableBean