Interface Connection

All Superinterfaces:
AutoCloseable, Closeable, ShutdownNotifier
All Known Subinterfaces:
RecoverableConnection
All Known Implementing Classes:
AMQConnection, AutorecoveringConnection, RecoveryAwareAMQConnection

public interface Connection extends ShutdownNotifier, Closeable
Public API: Interface to an AMQ connection. See the see the spec for details.

To connect to a broker, fill in a ConnectionFactory and use a ConnectionFactory as follows:

 ConnectionFactory factory = new ConnectionFactory();
 factory.setHost(hostName);
 factory.setPort(portNumber);
 factory.setVirtualHost(virtualHost);
 factory.setUsername(username);
 factory.setPassword(password);
 Connection conn = factory.newConnection();

 // Then open a channel:

 Channel channel = conn.createChannel();
 
Or, more compactly:
 ConnectionFactory factory = new ConnectionFactory();
 factory.setUri("amqp://username:password@hostName:portNumber/virtualHost");
 Connection conn = factory.newConnection();
 Channel channel = conn.createChannel()
 
Current implementations are thread-safe for code at the client API level, and in fact thread-safe internally except for code within RPC calls.
  • Method Details

    • getAddress

      InetAddress getAddress()
      Retrieve the host.
      Returns:
      the hostname of the peer we're connected to.
    • getPort

      int getPort()
      Retrieve the port number.
      Returns:
      the port number of the peer we're connected to.
    • getChannelMax

      int getChannelMax()
      Get the negotiated maximum channel number. Usable channel numbers range from 1 to this number, inclusive.
      Returns:
      the maximum channel number permitted for this connection.
    • getFrameMax

      int getFrameMax()
      Get the negotiated maximum frame size.
      Returns:
      the maximum frame size, in octets; zero if unlimited
    • getHeartbeat

      int getHeartbeat()
      Get the negotiated heartbeat interval.
      Returns:
      the heartbeat interval, in seconds; zero if none
    • getClientProperties

      Map<String,Object> getClientProperties()
      Get a copy of the map of client properties sent to the server
      Returns:
      a copy of the map of client properties
    • getClientProvidedName

      String getClientProvidedName()
      Returns client-provided connection name, if any. Note that the value returned does not uniquely identify a connection and cannot be used as a connection identifier in HTTP API requests.
      Returns:
      client-provided connection name, if any
      See Also:
    • getServerProperties

      Map<String,Object> getServerProperties()
      Retrieve the server properties.
      Returns:
      a map of the server properties. This typically includes the product name and version of the server.
    • createChannel

      Channel createChannel() throws IOException
      Create a new channel, using an internally allocated channel number. If automatic connection recovery is enabled, the channel returned by this method will be Recoverable.

      Use openChannel() if you want to use an Optional to deal with a value.

      Returns:
      a new channel descriptor, or null if none is available
      Throws:
      IOException - if an I/O problem is encountered
    • createChannel

      Channel createChannel(int channelNumber) throws IOException
      Create a new channel, using the specified channel number if possible.

      Use openChannel(int) if you want to use an Optional to deal with a value.

      Parameters:
      channelNumber - the channel number to allocate
      Returns:
      a new channel descriptor, or null if this channel number is already in use
      Throws:
      IOException - if an I/O problem is encountered
    • openChannel

      default Optional<Channel> openChannel() throws IOException
      Create a new channel wrapped in an Optional. The channel number is allocated internally.

      If automatic connection recovery is enabled, the channel returned by this method will be Recoverable.

      Use createChannel() to return directly a Channel or null.

      Returns:
      an Optional containing the channel; never null but potentially empty if no channel is available
      Throws:
      IOException - if an I/O problem is encountered
      Since:
      5.6.0
      See Also:
    • openChannel

      default Optional<Channel> openChannel(int channelNumber) throws IOException
      Create a new channel, using the specified channel number if possible.

      Use createChannel(int) to return directly a Channel or null.

      Parameters:
      channelNumber - the channel number to allocate
      Returns:
      an Optional containing the channel, never null but potentially empty if this channel number is already in use
      Throws:
      IOException - if an I/O problem is encountered
      Since:
      5.6.0
      See Also:
    • close

      void close() throws IOException
      Close this connection and all its channels with the AMQP.REPLY_SUCCESS close code and message 'OK'. Waits for all the close operations to complete.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - if an I/O problem is encountered
    • close

      void close(int closeCode, String closeMessage) throws IOException
      Close this connection and all its channels. Waits for all the close operations to complete.
      Parameters:
      closeCode - the close code (See under "Reply Codes" in the AMQP specification)
      closeMessage - a message indicating the reason for closing the connection
      Throws:
      IOException - if an I/O problem is encountered
    • close

      void close(int timeout) throws IOException
      Close this connection and all its channels with the AMQP.REPLY_SUCCESS close code and message 'OK'. This method behaves in a similar way as close(), with the only difference that it waits with a provided timeout for all the close operations to complete. When timeout is reached the socket is forced to close.
      Parameters:
      timeout - timeout (in milliseconds) for completing all the close-related operations, use -1 for infinity
      Throws:
      IOException - if an I/O problem is encountered
    • close

      void close(int closeCode, String closeMessage, int timeout) throws IOException
      Close this connection and all its channels. Waits with the given timeout for all the close operations to complete. When timeout is reached the socket is forced to close.
      Parameters:
      closeCode - the close code (See under "Reply Codes" in the AMQP specification)
      closeMessage - a message indicating the reason for closing the connection
      timeout - timeout (in milliseconds) for completing all the close-related operations, use -1 for infinity
      Throws:
      IOException - if an I/O problem is encountered
    • abort

      void abort()
      Abort this connection and all its channels with the AMQP.REPLY_SUCCESS close code and message 'OK'. Forces the connection to close. Any encountered exceptions in the close operations are silently discarded.
    • abort

      void abort(int closeCode, String closeMessage)
      Abort this connection and all its channels. Forces the connection to close and waits for all the close operations to complete. Any encountered exceptions in the close operations are silently discarded.
      Parameters:
      closeCode - the close code (See under "Reply Codes" in the AMQP specification)
      closeMessage - a message indicating the reason for closing the connection
    • abort

      void abort(int timeout)
      Abort this connection and all its channels with the AMQP.REPLY_SUCCESS close code and message 'OK'. This method behaves in a similar way as abort(), with the only difference that it waits with a provided timeout for all the close operations to complete. When timeout is reached the socket is forced to close.
      Parameters:
      timeout - timeout (in milliseconds) for completing all the close-related operations, use -1 for infinity
    • abort

      void abort(int closeCode, String closeMessage, int timeout)
      Abort this connection and all its channels. Forces the connection to close and waits with the given timeout for all the close operations to complete. When timeout is reached the socket is forced to close. Any encountered exceptions in the close operations are silently discarded.
      Parameters:
      closeCode - the close code (See under "Reply Codes" in the AMQP specification)
      closeMessage - a message indicating the reason for closing the connection
      timeout - timeout (in milliseconds) for completing all the close-related operations, use -1 for infinity
    • addBlockedListener

      void addBlockedListener(BlockedListener listener)
      Parameters:
      listener - the listener to add
    • addBlockedListener

      BlockedListener addBlockedListener(BlockedCallback blockedCallback, UnblockedCallback unblockedCallback)
      Add a lambda-based BlockedListener.
      Parameters:
      blockedCallback - the callback when the connection is blocked
      unblockedCallback - the callback when the connection is unblocked
      Returns:
      the listener that wraps the callback
      See Also:
    • removeBlockedListener

      boolean removeBlockedListener(BlockedListener listener)
      Remove a BlockedListener.
      Parameters:
      listener - the listener to remove
      Returns:
      true if the listener was found and removed, false otherwise
    • clearBlockedListeners

      void clearBlockedListeners()
      Remove all BlockedListeners.
    • getExceptionHandler

      ExceptionHandler getExceptionHandler()
      Get the exception handler.
      See Also:
    • getId

      String getId()
      Returns a unique ID for this connection. This ID must be unique, otherwise some services like the metrics collector won't work properly. This ID doesn't have to be provided by the client, services that require it will be assigned automatically if not set.
      Returns:
      unique ID for this connection.
    • setId

      void setId(String id)
      Sets a unique ID for this connection. This ID must be unique, otherwise some services like the metrics collector won't work properly. This ID doesn't have to be provided by the client, services that require it will be assigned automatically if not set.