private synchronized ConnectionFactory nodeConnectionFactory(String queue, int index) throws Exception {
		String address = this.addresses[index];
		String node = this.nodes[index];
		if (logger.isDebugEnabled()) {
			logger.debug("Queue: " + queue + " is on node: " + node + " at: " + address);
		}
		ConnectionFactory cf = this.nodeFactories.get(node);
		if (cf == null) {
			if (logger.isDebugEnabled()) {
				logger.debug("Creating new connection factory for: " + address);
			}
			cf = createConnectionFactory(address);
			this.nodeFactories.put(node, cf);
		}
		return cf;
	}
@param defaultConnectionFactory the fallback connection factory to use if the queue can't be located.
@param addresses the rabbitmq server addresses (host:port, ...).
@param adminAddresses the rabbitmq admin addresses (http://host:port, ...) must
be the same length as addresses.
@param nodes the rabbitmq nodes corresponding to addresses (rabbit@server1, ...).
@param vhost the virtual host.
@param username the user name.
@param password the password.
@param useSSL flag to enable SSL.
@param sslPropertiesLocation location of SSL properties file. If this is set, the
following parameters are not used.
@param keyStore the key store location if not using properties file.
@param keyStorePassphrase the key store passphrase if not using properties file.
@param trustStore the trust store location if not using properties file.
@param truststorePassphrase the trust store passphrase if not using properties
file.
spring-xd-messagebus-rabbit/src/main/java/org/springframework/xd/dirt/integration/rabbit/LocalizedQueueConnectionFactory.java