Class AbstractConnectionFactory

java.lang.Object
org.springframework.amqp.rabbit.connection.AbstractConnectionFactory
All Implemented Interfaces:
com.rabbitmq.client.ShutdownListener, EventListener, ConnectionFactory, Aware, BeanNameAware, DisposableBean, ApplicationContextAware, ApplicationEventPublisherAware, ApplicationListener<ContextClosedEvent>
Direct Known Subclasses:
CachingConnectionFactory, PooledChannelConnectionFactory, ThreadChannelConnectionFactory

public abstract class AbstractConnectionFactory extends Object implements ConnectionFactory, DisposableBean, BeanNameAware, ApplicationContextAware, ApplicationEventPublisherAware, ApplicationListener<ContextClosedEvent>, com.rabbitmq.client.ShutdownListener
Author:
Dave Syer, Gary Russell, Steve Powell, Artem Bilan, Will Droste, Christian Tzolov, Salk Lee
  • Field Details

    • DEFAULT_CLOSE_TIMEOUT

      public static final int DEFAULT_CLOSE_TIMEOUT
      See Also:
    • logger

      protected final Log logger
  • Constructor Details

    • AbstractConnectionFactory

      public AbstractConnectionFactory(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory)
      Create a new AbstractConnectionFactory for the given target ConnectionFactory, with no publisher connection factory.
      Parameters:
      rabbitConnectionFactory - the target ConnectionFactory
  • Method Details

    • setPublisherConnectionFactory

      public void setPublisherConnectionFactory(@Nullable AbstractConnectionFactory publisherConnectionFactory)
      Set a custom publisher connection factory; the type does not need to be the same as this factory.
      Parameters:
      publisherConnectionFactory - the factory.
      Since:
      2.3.2
    • doSetPublisherConnectionFactory

      protected final void doSetPublisherConnectionFactory(@Nullable AbstractConnectionFactory publisherConnectionFactory)
    • setApplicationContext

      public void setApplicationContext(ApplicationContext applicationContext)
      Specified by:
      setApplicationContext in interface ApplicationContextAware
    • getApplicationContext

      protected ApplicationContext getApplicationContext()
    • setApplicationEventPublisher

      public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
      Specified by:
      setApplicationEventPublisher in interface ApplicationEventPublisherAware
    • getApplicationEventPublisher

      protected ApplicationEventPublisher getApplicationEventPublisher()
    • onApplicationEvent

      public void onApplicationEvent(ContextClosedEvent event)
      Specified by:
      onApplicationEvent in interface ApplicationListener<ContextClosedEvent>
    • getContextStopped

      protected boolean getContextStopped()
    • getRabbitConnectionFactory

      public com.rabbitmq.client.ConnectionFactory getRabbitConnectionFactory()
      Return a reference to the underlying Rabbit Connection factory.
      Returns:
      the connection factory.
      Since:
      1.5.6
    • getUsername

      public String getUsername()
      Return the user name from the underlying rabbit connection factory.
      Specified by:
      getUsername in interface ConnectionFactory
      Returns:
      the user name.
      Since:
      1.6
    • setUsername

      public void setUsername(String username)
    • setPassword

      public void setPassword(String password)
    • setHost

      public void setHost(String host)
    • setConnectionThreadFactory

      public void setConnectionThreadFactory(ThreadFactory threadFactory)
      Set the ThreadFactory on the underlying rabbit connection factory.
      Parameters:
      threadFactory - the thread factory.
      Since:
      1.5.3
    • setAddressResolver

      public void setAddressResolver(com.rabbitmq.client.AddressResolver addressResolver)
      Set an AddressResolver to use when creating connections; overrides setAddresses(String), setHost(String), and setPort(int).
      Parameters:
      addressResolver - the resolver.
      Since:
      2.1.15
    • setUri

      public void setUri(URI uri)
      Parameters:
      uri - the URI
      Since:
      1.5
      See Also:
      • ConnectionFactory.setUri(URI)
    • setUri

      public void setUri(String uri)
      Parameters:
      uri - the URI
      Since:
      1.5
      See Also:
      • ConnectionFactory.setUri(String)
    • getHost

      @Nullable public String getHost()
      Specified by:
      getHost in interface ConnectionFactory
    • setVirtualHost

      public void setVirtualHost(String virtualHost)
    • getVirtualHost

      public String getVirtualHost()
      Specified by:
      getVirtualHost in interface ConnectionFactory
    • setPort

      public void setPort(int port)
    • setRequestedHeartBeat

      public void setRequestedHeartBeat(int requestedHeartBeat)
    • setConnectionTimeout

      public void setConnectionTimeout(int connectionTimeout)
    • getPort

      public int getPort()
      Specified by:
      getPort in interface ConnectionFactory
    • setAddresses

      public void setAddresses(String addresses)
      Set addresses for clustering. This property overrides the host+port properties if not empty.
      Parameters:
      addresses - list of addresses with form "host[:port],..."
    • getAddresses

      @Nullable protected List<com.rabbitmq.client.Address> getAddresses() throws IOException
      Throws:
      IOException
    • getConnectionListener

      protected ConnectionListener getConnectionListener()
      A composite connection listener to be used by subclasses when creating and closing connections.
      Returns:
      the connection listener
    • getChannelListener

      protected ChannelListener getChannelListener()
      A composite channel listener to be used by subclasses when creating and closing channels.
      Returns:
      the channel listener
    • setConnectionListeners

      public void setConnectionListeners(List<? extends ConnectionListener> listeners)
    • addConnectionListener

      public void addConnectionListener(ConnectionListener listener)
      Specified by:
      addConnectionListener in interface ConnectionFactory
    • removeConnectionListener

      public boolean removeConnectionListener(ConnectionListener listener)
      Specified by:
      removeConnectionListener in interface ConnectionFactory
    • clearConnectionListeners

      public void clearConnectionListeners()
      Specified by:
      clearConnectionListeners in interface ConnectionFactory
    • setChannelListeners

      public void setChannelListeners(List<? extends ChannelListener> listeners)
    • setRecoveryListener

      public void setRecoveryListener(com.rabbitmq.client.RecoveryListener recoveryListener)
      Set a RecoveryListener that will be added to each connection created.
      Parameters:
      recoveryListener - the listener.
      Since:
      2.0
    • addChannelListener

      public void addChannelListener(ChannelListener listener)
    • setExecutor

      public void setExecutor(Executor executor)
      Provide an Executor for use by the Rabbit ConnectionFactory when creating connections. Can either be an ExecutorService or a Spring ThreadPoolTaskExecutor, as defined by a <task:executor/> element.
      Parameters:
      executor - The executor.
    • getExecutorService

      @Nullable protected ExecutorService getExecutorService()
    • setCloseTimeout

      public void setCloseTimeout(int closeTimeout)
      How long to wait (milliseconds) for a response to a connection close operation from the broker; default 30000 (30 seconds). Also used for Channel.waitForConfirms().
      Parameters:
      closeTimeout - the closeTimeout to set.
    • getCloseTimeout

      public int getCloseTimeout()
    • setConnectionNameStrategy

      public void setConnectionNameStrategy(ConnectionNameStrategy connectionNameStrategy)
      Provide a ConnectionNameStrategy to build the name for the target RabbitMQ connection. The beanName together with a counter is used by default.
      Parameters:
      connectionNameStrategy - the ConnectionNameStrategy to use.
      Since:
      2.0
    • setCloseExceptionLogger

      public void setCloseExceptionLogger(ConditionalExceptionLogger closeExceptionLogger)
      Set the strategy for logging close exceptions; by default, if a channel is closed due to a failed passive queue declaration, it is logged at debug level. Normal channel closes (200 OK) are not logged. All others are logged at ERROR level (unless access is refused due to an exclusive consumer condition, in which case, it is logged at DEBUG level, since 3.1, previously INFO).
      Parameters:
      closeExceptionLogger - the ConditionalExceptionLogger.
      Since:
      1.5
    • getConnectionNameStrategy

      protected ConnectionNameStrategy getConnectionNameStrategy()
    • setBeanName

      public void setBeanName(String name)
      Specified by:
      setBeanName in interface BeanNameAware
    • getBeanName

      @Nullable protected String getBeanName()
      Return a bean name of the component or null if not a bean.
      Returns:
      the bean name or null.
      Since:
      1.7.9
    • setAddressShuffleMode

      public void setAddressShuffleMode(AbstractConnectionFactory.AddressShuffleMode addressShuffleMode)
      Set the mode for shuffling addresses.
      Parameters:
      addressShuffleMode - the address shuffle mode.
      Since:
      2.3
      See Also:
    • hasPublisherConnectionFactory

      public boolean hasPublisherConnectionFactory()
    • setConnectionCreatingBackOff

      public void setConnectionCreatingBackOff(@Nullable BackOff backOff)
      Set the backoff strategy for creating connections. This enhancement supports custom retry policies within the connection module, particularly useful when the maximum channel limit is reached. The SimpleConnection.createChannel(boolean) method utilizes this backoff strategy to gracefully handle such limit exceptions.
      Parameters:
      backOff - the backoff strategy to be applied during connection creation
      Since:
      3.1.3
    • getPublisherConnectionFactory

      public ConnectionFactory getPublisherConnectionFactory()
      Description copied from interface: ConnectionFactory
      Return a separate connection factory for publishers (if implemented).
      Specified by:
      getPublisherConnectionFactory in interface ConnectionFactory
      Returns:
      the publisher connection factory, or null.
    • createBareConnection

      protected final Connection createBareConnection()
    • getDefaultHostName

      protected final String getDefaultHostName()
    • shutdownCompleted

      public void shutdownCompleted(com.rabbitmq.client.ShutdownSignalException cause)
      Specified by:
      shutdownCompleted in interface com.rabbitmq.client.ShutdownListener
    • destroy

      public void destroy()
      Specified by:
      destroy in interface DisposableBean
    • toString

      public String toString()
      Overrides:
      toString in class Object