Class ThreadChannelConnectionFactory
- java.lang.Object
-
- org.springframework.amqp.rabbit.connection.AbstractConnectionFactory
-
- org.springframework.amqp.rabbit.connection.ThreadChannelConnectionFactory
-
- All Implemented Interfaces:
com.rabbitmq.client.ShutdownListener
,EventListener
,ConnectionFactory
,Aware
,BeanNameAware
,DisposableBean
,ApplicationContextAware
,ApplicationEventPublisherAware
,ApplicationListener<ContextClosedEvent>
public class ThreadChannelConnectionFactory extends AbstractConnectionFactory implements com.rabbitmq.client.ShutdownListener
A very simple connection factory that caches a channel per thread. Users are responsible for releasing the thread's channel by callingcloseThreadChannel()
.- Since:
- 2.3
- Author:
- Gary Russell, Leonardo Ferreira
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.springframework.amqp.rabbit.connection.AbstractConnectionFactory
AbstractConnectionFactory.AddressShuffleMode
-
-
Field Summary
-
Fields inherited from class org.springframework.amqp.rabbit.connection.AbstractConnectionFactory
DEFAULT_CLOSE_TIMEOUT, logger
-
-
Constructor Summary
Constructors Constructor Description ThreadChannelConnectionFactory(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory)
Construct an instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addConnectionListener(ConnectionListener listener)
void
closeThreadChannel()
Close the channel associated with this thread, if any.Connection
createConnection()
void
destroy()
boolean
isSimplePublisherConfirms()
Return true if simple publisher confirms are enabled.Object
prepareSwitchContext()
Call to prepare to switch the channel(s) owned by this thread to another thread.void
resetConnection()
Close the connection(s).void
setPublisherConnectionFactory(AbstractConnectionFactory publisherConnectionFactory)
Set a custom publisher connection factory; the type does not need to be the same as this factory.void
setSimplePublisherConfirms(boolean simplePublisherConfirms)
Enable simple publisher confirms.void
switchContext(Object toSwitch)
Acquire ownership of another thread's channel(s) after that thread calledprepareSwitchContext()
.-
Methods inherited from class org.springframework.amqp.rabbit.connection.AbstractConnectionFactory
addChannelListener, clearConnectionListeners, createBareConnection, doSetPublisherConnectionFactory, getApplicationContext, getApplicationEventPublisher, getBeanName, getChannelListener, getCloseTimeout, getConnectionListener, getConnectionNameStrategy, getContextStopped, getDefaultHostName, getExecutorService, getHost, getPort, getPublisherConnectionFactory, getRabbitConnectionFactory, getUsername, getVirtualHost, hasPublisherConnectionFactory, onApplicationEvent, removeConnectionListener, setAddresses, setAddressResolver, setAddressShuffleMode, setApplicationContext, setApplicationEventPublisher, setBeanName, setChannelListeners, setCloseExceptionLogger, setCloseTimeout, setConnectionListeners, setConnectionNameStrategy, setConnectionThreadFactory, setConnectionTimeout, setExecutor, setHost, setPassword, setPort, setRecoveryListener, setRequestedHeartBeat, setShuffleAddresses, setUri, setUri, setUsername, setVirtualHost, shutdownCompleted, 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
isPublisherConfirms, isPublisherReturns
-
-
-
-
Method Detail
-
setPublisherConnectionFactory
public void setPublisherConnectionFactory(@Nullable AbstractConnectionFactory publisherConnectionFactory)
Description copied from class:AbstractConnectionFactory
Set a custom publisher connection factory; the type does not need to be the same as this factory.- Overrides:
setPublisherConnectionFactory
in classAbstractConnectionFactory
- Parameters:
publisherConnectionFactory
- the factory.
-
isSimplePublisherConfirms
public boolean isSimplePublisherConfirms()
Description copied from interface:ConnectionFactory
Return true if simple publisher confirms are enabled.- Specified by:
isSimplePublisherConfirms
in interfaceConnectionFactory
- Returns:
- simplePublisherConfirms
-
setSimplePublisherConfirms
public void setSimplePublisherConfirms(boolean simplePublisherConfirms)
Enable simple publisher confirms.- Parameters:
simplePublisherConfirms
- true to enable.
-
addConnectionListener
public void addConnectionListener(ConnectionListener listener)
- Specified by:
addConnectionListener
in interfaceConnectionFactory
- Overrides:
addConnectionListener
in classAbstractConnectionFactory
-
createConnection
public Connection createConnection() throws AmqpException
- Specified by:
createConnection
in interfaceConnectionFactory
- Throws:
AmqpException
-
closeThreadChannel
public void closeThreadChannel()
Close the channel associated with this thread, if any.
-
resetConnection
public void resetConnection()
Close the connection(s). This will impact any in-process operations. New connection(s) will be created on demand after this method returns. This might be used to force a reconnect to the primary broker after failing over to a secondary broker.- Specified by:
resetConnection
in interfaceConnectionFactory
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceDisposableBean
- Overrides:
destroy
in classAbstractConnectionFactory
-
prepareSwitchContext
@Nullable public Object prepareSwitchContext()
Call to prepare to switch the channel(s) owned by this thread to another thread.- Returns:
- an opaque object representing the context to switch. If there are no channels or no open channels assigned to this thread, null is returned.
- Since:
- 2.3.7
- See Also:
switchContext(Object)
-
switchContext
public void switchContext(@Nullable Object toSwitch)
Acquire ownership of another thread's channel(s) after that thread calledprepareSwitchContext()
.- Parameters:
toSwitch
- the context returned byprepareSwitchContext()
.- Since:
- 2.3.7
- See Also:
prepareSwitchContext()
-
-