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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumThe mode used to shuffle the addresses.static classDefault implementation ofConditionalExceptionLoggerfor logging channel close exceptions. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionAbstractConnectionFactory(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory) Create a new AbstractConnectionFactory for the given target ConnectionFactory, with no publisher connection factory. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddChannelListener(ChannelListener listener) voidaddConnectionListener(ConnectionListener listener) voidprotected final Connectionvoiddestroy()protected final voiddoSetPublisherConnectionFactory(AbstractConnectionFactory publisherConnectionFactory) protected List<com.rabbitmq.client.Address> protected ApplicationContextprotected ApplicationEventPublisherprotected StringReturn a bean name of the component or null if not a bean.protected ChannelListenerA composite channel listener to be used by subclasses when creating and closing channels.intprotected ConnectionListenerA composite connection listener to be used by subclasses when creating and closing connections.protected ConnectionNameStrategyprotected booleanprotected final Stringprotected ExecutorServicegetHost()intgetPort()Return a separate connection factory for publishers (if implemented).com.rabbitmq.client.ConnectionFactoryReturn a reference to the underlying Rabbit Connection factory.Return the user name from the underlying rabbit connection factory.booleanvoidbooleanremoveConnectionListener(ConnectionListener listener) voidsetAddresses(String addresses) Set addresses for clustering.voidsetAddressResolver(com.rabbitmq.client.AddressResolver addressResolver) Set anAddressResolverto use when creating connections; overridessetAddresses(String),setHost(String), andsetPort(int).voidsetAddressShuffleMode(AbstractConnectionFactory.AddressShuffleMode addressShuffleMode) Set the mode for shuffling addresses.voidsetApplicationContext(ApplicationContext applicationContext) voidsetApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) voidsetBeanName(String name) voidsetChannelListeners(List<? extends ChannelListener> listeners) voidsetCloseExceptionLogger(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.voidsetCloseTimeout(int closeTimeout) How long to wait (milliseconds) for a response to a connection close operation from the broker; default 30000 (30 seconds).voidsetConnectionCreatingBackOff(BackOff backOff) Set the backoff strategy for creating connections.voidsetConnectionListeners(List<? extends ConnectionListener> listeners) voidsetConnectionNameStrategy(ConnectionNameStrategy connectionNameStrategy) Provide aConnectionNameStrategyto build the name for the target RabbitMQ connection.voidsetConnectionThreadFactory(ThreadFactory threadFactory) Set theThreadFactoryon the underlying rabbit connection factory.voidsetConnectionTimeout(int connectionTimeout) voidsetExecutor(Executor executor) Provide an Executor for use by the Rabbit ConnectionFactory when creating connections.voidvoidsetPassword(String password) voidsetPort(int port) voidsetPublisherConnectionFactory(AbstractConnectionFactory publisherConnectionFactory) Set a custom publisher connection factory; the type does not need to be the same as this factory.voidsetRecoveryListener(com.rabbitmq.client.RecoveryListener recoveryListener) Set aRecoveryListenerthat will be added to each connection created.voidsetRequestedHeartBeat(int requestedHeartBeat) voidvoidvoidsetUsername(String username) voidsetVirtualHost(String virtualHost) voidshutdownCompleted(com.rabbitmq.client.ShutdownSignalException cause) toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationListener
supportsAsyncExecutionMethods inherited from interface org.springframework.amqp.rabbit.connection.ConnectionFactory
createConnection, isPublisherConfirms, isPublisherReturns, isSimplePublisherConfirms, resetConnection
-
Field Details
-
DEFAULT_CLOSE_TIMEOUT
public static final int DEFAULT_CLOSE_TIMEOUT- See Also:
-
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
- Specified by:
setApplicationContextin interfaceApplicationContextAware
-
getApplicationContext
-
setApplicationEventPublisher
- Specified by:
setApplicationEventPublisherin interfaceApplicationEventPublisherAware
-
getApplicationEventPublisher
-
onApplicationEvent
- Specified by:
onApplicationEventin interfaceApplicationListener<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
Return the user name from the underlying rabbit connection factory.- Specified by:
getUsernamein interfaceConnectionFactory- Returns:
- the user name.
- Since:
- 1.6
-
setUsername
-
setPassword
-
setHost
-
setConnectionThreadFactory
Set theThreadFactoryon the underlying rabbit connection factory.- Parameters:
threadFactory- the thread factory.- Since:
- 1.5.3
-
setAddressResolver
public void setAddressResolver(com.rabbitmq.client.AddressResolver addressResolver) Set anAddressResolverto use when creating connections; overridessetAddresses(String),setHost(String), andsetPort(int).- Parameters:
addressResolver- the resolver.- Since:
- 2.1.15
-
setUri
- Parameters:
uri- the URI- Since:
- 1.5
- See Also:
-
setUri
- Parameters:
uri- the URI- Since:
- 1.5
- See Also:
-
getHost
- Specified by:
getHostin interfaceConnectionFactory
-
setVirtualHost
-
getVirtualHost
- Specified by:
getVirtualHostin interfaceConnectionFactory
-
setPort
public void setPort(int port) -
setRequestedHeartBeat
public void setRequestedHeartBeat(int requestedHeartBeat) -
setConnectionTimeout
public void setConnectionTimeout(int connectionTimeout) -
getPort
public int getPort()- Specified by:
getPortin interfaceConnectionFactory
-
setAddresses
Set addresses for clustering. This property overrides the host+port properties if not empty.- Parameters:
addresses- list of addresses with form "host[:port],..."
-
getAddresses
- Throws:
IOException
-
getConnectionListener
A composite connection listener to be used by subclasses when creating and closing connections.- Returns:
- the connection listener
-
getChannelListener
A composite channel listener to be used by subclasses when creating and closing channels.- Returns:
- the channel listener
-
setConnectionListeners
-
addConnectionListener
- Specified by:
addConnectionListenerin interfaceConnectionFactory
-
removeConnectionListener
- Specified by:
removeConnectionListenerin interfaceConnectionFactory
-
clearConnectionListeners
public void clearConnectionListeners()- Specified by:
clearConnectionListenersin interfaceConnectionFactory
-
setChannelListeners
-
setRecoveryListener
public void setRecoveryListener(com.rabbitmq.client.RecoveryListener recoveryListener) Set aRecoveryListenerthat will be added to each connection created.- Parameters:
recoveryListener- the listener.- Since:
- 2.0
-
addChannelListener
-
setExecutor
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
-
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 forChannel.waitForConfirms().- Parameters:
closeTimeout- the closeTimeout to set.
-
getCloseTimeout
public int getCloseTimeout() -
setConnectionNameStrategy
Provide aConnectionNameStrategyto build the name for the target RabbitMQ connection. ThebeanNametogether with a counter is used by default.- Parameters:
connectionNameStrategy- theConnectionNameStrategyto use.- Since:
- 2.0
-
setCloseExceptionLogger
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- theConditionalExceptionLogger.- Since:
- 1.5
-
getConnectionNameStrategy
-
setBeanName
- Specified by:
setBeanNamein interfaceBeanNameAware
-
getBeanName
-
setAddressShuffleMode
Set the mode for shuffling addresses.- Parameters:
addressShuffleMode- the address shuffle mode.- Since:
- 2.3
- See Also:
-
hasPublisherConnectionFactory
public boolean hasPublisherConnectionFactory() -
setConnectionCreatingBackOff
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. TheSimpleConnection.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
Description copied from interface:ConnectionFactoryReturn a separate connection factory for publishers (if implemented).- Specified by:
getPublisherConnectionFactoryin interfaceConnectionFactory- Returns:
- the publisher connection factory, or null.
-
createBareConnection
-
getDefaultHostName
-
shutdownCompleted
public void shutdownCompleted(com.rabbitmq.client.ShutdownSignalException cause) - Specified by:
shutdownCompletedin interfacecom.rabbitmq.client.ShutdownListener
-
destroy
public void destroy()- Specified by:
destroyin interfaceDisposableBean
-
toString
-