/**
  * Create a new broker connection with a client-provided name, picking the first available address
  * from the list.
  *
  * <p>If <a href="http://www.rabbitmq.com/api-guide.html#recovery">automatic connection
  * recovery</a> is enabled, the connection returned by this method will be {@link Recoverable}.
  * Future reconnection attempts will pick a random accessible address from the provided list.
  *
  * @param executor thread execution service for consumers on the connection
  * @param addrs an array of known broker addresses (hostname/port pairs) to try in order
  * @param clientProvidedName application-specific connection name, will be displayed in the
  *     management UI if RabbitMQ server supports it. This value doesn't have to be unique and
  *     cannot be used as a connection identifier e.g. in HTTP API requests. This value is supposed
  *     to be human-readable.
  * @return an interface to the connection
  * @throws java.io.IOException if it encounters a problem
  * @see <a href="http://www.rabbitmq.com/api-guide.html#recovery">Automatic Recovery</a>
  */
 public Connection newConnection(
     ExecutorService executor, Address[] addrs, String clientProvidedName)
     throws IOException, TimeoutException {
   return newConnection(executor, Arrays.asList(addrs), clientProvidedName);
 }
 /**
  * Create a new broker connection with a client-provided name, picking the first available address
  * from the list.
  *
  * <p>If <a href="http://www.rabbitmq.com/api-guide.html#recovery">automatic connection
  * recovery</a> is enabled, the connection returned by this method will be {@link Recoverable}.
  * Future reconnection attempts will pick a random accessible address from the provided list.
  *
  * @param addrs an array of known broker addresses (hostname/port pairs) to try in order
  * @param clientProvidedName application-specific connection name, will be displayed in the
  *     management UI if RabbitMQ server supports it. This value doesn't have to be unique and
  *     cannot be used as a connection identifier e.g. in HTTP API requests. This value is supposed
  *     to be human-readable.
  * @return an interface to the connection
  * @throws IOException if it encounters a problem
  */
 public Connection newConnection(Address[] addrs, String clientProvidedName)
     throws IOException, TimeoutException {
   return newConnection(this.sharedExecutor, Arrays.asList(addrs), clientProvidedName);
 }
 /**
  * Create a new broker connection, picking the first available address from the list.
  *
  * <p>If <a href="http://www.rabbitmq.com/api-guide.html#recovery">automatic connection
  * recovery</a> is enabled, the connection returned by this method will be {@link Recoverable}.
  * Future reconnection attempts will pick a random accessible address from the provided list.
  *
  * @param executor thread execution service for consumers on the connection
  * @param addrs an array of known broker addresses (hostname/port pairs) to try in order
  * @return an interface to the connection
  * @throws java.io.IOException if it encounters a problem
  * @see <a href="http://www.rabbitmq.com/api-guide.html#recovery">Automatic Recovery</a>
  */
 public Connection newConnection(ExecutorService executor, Address[] addrs)
     throws IOException, TimeoutException {
   return newConnection(executor, Arrays.asList(addrs), null);
 }
 /**
  * Create a new broker connection, picking the first available address from the list.
  *
  * <p>If <a href="http://www.rabbitmq.com/api-guide.html#recovery">automatic connection
  * recovery</a> is enabled, the connection returned by this method will be {@link Recoverable}.
  * Future reconnection attempts will pick a random accessible address from the provided list.
  *
  * @param addrs an array of known broker addresses (hostname/port pairs) to try in order
  * @return an interface to the connection
  * @throws IOException if it encounters a problem
  */
 public Connection newConnection(Address[] addrs) throws IOException, TimeoutException {
   return newConnection(this.sharedExecutor, Arrays.asList(addrs), null);
 }