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
Modifier and TypeClassDescriptionstatic enum
The mode used to shuffle the addresses.static class
Default implementation ofConditionalExceptionLogger
for logging channel close exceptions. -
Field Summary
-
Constructor Summary
ConstructorDescriptionAbstractConnectionFactory
(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory) Create a new AbstractConnectionFactory for the given target ConnectionFactory, with no publisher connection factory. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addChannelListener
(ChannelListener listener) void
addConnectionListener
(ConnectionListener listener) void
protected final Connection
void
destroy()
protected final void
doSetPublisherConnectionFactory
(AbstractConnectionFactory publisherConnectionFactory) protected List<com.rabbitmq.client.Address>
protected ApplicationContext
protected ApplicationEventPublisher
protected String
Return a bean name of the component or null if not a bean.protected ChannelListener
A composite channel listener to be used by subclasses when creating and closing channels.int
protected ConnectionListener
A composite connection listener to be used by subclasses when creating and closing connections.protected ConnectionNameStrategy
protected boolean
protected final String
protected ExecutorService
getHost()
int
getPort()
Return a separate connection factory for publishers (if implemented).com.rabbitmq.client.ConnectionFactory
Return a reference to the underlying Rabbit Connection factory.Return the user name from the underlying rabbit connection factory.boolean
void
boolean
removeConnectionListener
(ConnectionListener listener) void
setAddresses
(String addresses) Set addresses for clustering.void
setAddressResolver
(com.rabbitmq.client.AddressResolver addressResolver) Set anAddressResolver
to use when creating connections; overridessetAddresses(String)
,setHost(String)
, andsetPort(int)
.void
setAddressShuffleMode
(AbstractConnectionFactory.AddressShuffleMode addressShuffleMode) Set the mode for shuffling addresses.void
setApplicationContext
(ApplicationContext applicationContext) void
setApplicationEventPublisher
(ApplicationEventPublisher applicationEventPublisher) void
setBeanName
(String name) void
setChannelListeners
(List<? extends ChannelListener> listeners) 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.void
setCloseTimeout
(int closeTimeout) How long to wait (milliseconds) for a response to a connection close operation from the broker; default 30000 (30 seconds).void
setConnectionCreatingBackOff
(BackOff backOff) Set the backoff strategy for creating connections.void
setConnectionListeners
(List<? extends ConnectionListener> listeners) void
setConnectionNameStrategy
(ConnectionNameStrategy connectionNameStrategy) Provide aConnectionNameStrategy
to build the name for the target RabbitMQ connection.void
setConnectionThreadFactory
(ThreadFactory threadFactory) Set theThreadFactory
on the underlying rabbit connection factory.void
setConnectionTimeout
(int connectionTimeout) void
setExecutor
(Executor executor) Provide an Executor for use by the Rabbit ConnectionFactory when creating connections.void
void
setPassword
(String password) void
setPort
(int port) void
setPublisherConnectionFactory
(AbstractConnectionFactory publisherConnectionFactory) Set a custom publisher connection factory; the type does not need to be the same as this factory.void
setRecoveryListener
(com.rabbitmq.client.RecoveryListener recoveryListener) Set aRecoveryListener
that will be added to each connection created.void
setRequestedHeartBeat
(int requestedHeartBeat) void
void
void
setUsername
(String username) void
setVirtualHost
(String virtualHost) void
shutdownCompleted
(com.rabbitmq.client.ShutdownSignalException cause) toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.context.ApplicationListener
supportsAsyncExecution
Methods 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:
setApplicationContext
in interfaceApplicationContextAware
-
getApplicationContext
-
setApplicationEventPublisher
- Specified by:
setApplicationEventPublisher
in interfaceApplicationEventPublisherAware
-
getApplicationEventPublisher
-
onApplicationEvent
- Specified by:
onApplicationEvent
in 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:
getUsername
in interfaceConnectionFactory
- Returns:
- the user name.
- Since:
- 1.6
-
setUsername
-
setPassword
-
setHost
-
setConnectionThreadFactory
Set theThreadFactory
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 anAddressResolver
to 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:
-
ConnectionFactory.setUri(URI)
-
setUri
- Parameters:
uri
- the URI- Since:
- 1.5
- See Also:
-
ConnectionFactory.setUri(String)
-
getHost
- Specified by:
getHost
in interfaceConnectionFactory
-
setVirtualHost
-
getVirtualHost
- Specified by:
getVirtualHost
in 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:
getPort
in 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:
addConnectionListener
in interfaceConnectionFactory
-
removeConnectionListener
- Specified by:
removeConnectionListener
in interfaceConnectionFactory
-
clearConnectionListeners
public void clearConnectionListeners()- Specified by:
clearConnectionListeners
in interfaceConnectionFactory
-
setChannelListeners
-
setRecoveryListener
public void setRecoveryListener(com.rabbitmq.client.RecoveryListener recoveryListener) Set aRecoveryListener
that 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 aConnectionNameStrategy
to build the name for the target RabbitMQ connection. ThebeanName
together with a counter is used by default.- Parameters:
connectionNameStrategy
- theConnectionNameStrategy
to 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:
setBeanName
in interfaceBeanNameAware
-
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
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:ConnectionFactory
Return a separate connection factory for publishers (if implemented).- Specified by:
getPublisherConnectionFactory
in interfaceConnectionFactory
- Returns:
- the publisher connection factory, or null.
-
createBareConnection
-
getDefaultHostName
-
shutdownCompleted
public void shutdownCompleted(com.rabbitmq.client.ShutdownSignalException cause) - Specified by:
shutdownCompleted
in interfacecom.rabbitmq.client.ShutdownListener
-
destroy
public void destroy()- Specified by:
destroy
in interfaceDisposableBean
-
toString
-