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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractConnectionFactory.AddressShuffleMode
The mode used to shuffle the addresses.
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_CLOSE_TIMEOUT
protected Log
logger
-
Constructor Summary
Constructors Constructor Description AbstractConnectionFactory(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory)
Create a new AbstractConnectionFactory for the given target ConnectionFactory, with no publisher connection factory.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addChannelListener(ChannelListener listener)
void
addConnectionListener(ConnectionListener listener)
void
clearConnectionListeners()
protected Connection
createBareConnection()
void
destroy()
protected void
doSetPublisherConnectionFactory(AbstractConnectionFactory publisherConnectionFactory)
protected ApplicationContext
getApplicationContext()
protected ApplicationEventPublisher
getApplicationEventPublisher()
protected String
getBeanName()
Return a bean name of the component or null if not a bean.protected ChannelListener
getChannelListener()
A composite channel listener to be used by subclasses when creating and closing channels.int
getCloseTimeout()
protected ConnectionListener
getConnectionListener()
A composite connection listener to be used by subclasses when creating and closing connections.protected ConnectionNameStrategy
getConnectionNameStrategy()
protected boolean
getContextStopped()
protected String
getDefaultHostName()
protected ExecutorService
getExecutorService()
String
getHost()
int
getPort()
ConnectionFactory
getPublisherConnectionFactory()
Return a separate connection factory for publishers (if implemented).com.rabbitmq.client.ConnectionFactory
getRabbitConnectionFactory()
Return a reference to the underlying Rabbit Connection factory.String
getUsername()
Return the user name from the underlying rabbit connection factory.String
getVirtualHost()
boolean
hasPublisherConnectionFactory()
void
onApplicationEvent(ContextClosedEvent event)
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
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
setHost(String host)
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
setShuffleAddresses(boolean shuffleAddresses)
Deprecated.since 2.3 in favor ofvoid
setUri(String uri)
void
setUri(URI uri)
void
setUsername(String username)
void
setVirtualHost(String virtualHost)
void
shutdownCompleted(com.rabbitmq.client.ShutdownSignalException cause)
String
toString()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.springframework.amqp.rabbit.connection.ConnectionFactory
createConnection, isPublisherConfirms, isPublisherReturns, isSimplePublisherConfirms
-
-
-
-
Field Detail
-
DEFAULT_CLOSE_TIMEOUT
public static final int DEFAULT_CLOSE_TIMEOUT
- See Also:
- Constant Field Values
-
logger
protected final Log logger
-
-
Constructor Detail
-
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 Detail
-
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 interfaceApplicationContextAware
-
getApplicationContext
protected ApplicationContext getApplicationContext()
-
setApplicationEventPublisher
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
- Specified by:
setApplicationEventPublisher
in interfaceApplicationEventPublisherAware
-
getApplicationEventPublisher
protected ApplicationEventPublisher getApplicationEventPublisher()
-
onApplicationEvent
public void onApplicationEvent(ContextClosedEvent event)
- 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
public String getUsername()
Return the user name from the underlying rabbit connection factory.- Specified by:
getUsername
in interfaceConnectionFactory
- 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 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
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
public String getHost()
- Specified by:
getHost
in interfaceConnectionFactory
-
setVirtualHost
public void setVirtualHost(String virtualHost)
-
getVirtualHost
public String 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
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],..."
-
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 interfaceConnectionFactory
-
removeConnectionListener
public boolean removeConnectionListener(ConnectionListener listener)
- Specified by:
removeConnectionListener
in interfaceConnectionFactory
-
clearConnectionListeners
public void clearConnectionListeners()
- Specified by:
clearConnectionListeners
in interfaceConnectionFactory
-
setChannelListeners
public void setChannelListeners(List<? extends ChannelListener> listeners)
-
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
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).- Parameters:
closeTimeout
- the closeTimeout to set.
-
getCloseTimeout
public int getCloseTimeout()
-
setConnectionNameStrategy
public void setConnectionNameStrategy(ConnectionNameStrategy connectionNameStrategy)
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
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 INFO level).- Parameters:
closeExceptionLogger
- theConditionalExceptionLogger
.- Since:
- 1.5
-
getConnectionNameStrategy
protected ConnectionNameStrategy getConnectionNameStrategy()
-
setBeanName
public void setBeanName(String name)
- Specified by:
setBeanName
in interfaceBeanNameAware
-
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
-
setShuffleAddresses
@Deprecated public void setShuffleAddresses(boolean shuffleAddresses)
Deprecated.since 2.3 in favor ofWhenaddresses
are provided and there is more than one, set to true to shuffle the list before opening a new connection so that the connection to the broker will be attempted in random order.- Parameters:
shuffleAddresses
- true to shuffle the list.- Since:
- 2.1.8
- See Also:
.
-
setAddressShuffleMode
public void setAddressShuffleMode(AbstractConnectionFactory.AddressShuffleMode addressShuffleMode)
Set the mode for shuffling addresses.- Parameters:
addressShuffleMode
- the address shuffle mode.- Since:
- 2.3
- See Also:
Collections.shuffle(List)
-
hasPublisherConnectionFactory
public boolean hasPublisherConnectionFactory()
-
getPublisherConnectionFactory
public ConnectionFactory 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
protected final Connection createBareConnection()
-
getDefaultHostName
protected final String 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
-
-