|
Spring AMQP | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.amqp.rabbit.support.RabbitAccessor
org.springframework.amqp.rabbit.listener.AbstractRabbitListeningContainer
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer
public abstract class AbstractMessageListenerContainer
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.springframework.amqp.rabbit.listener.AbstractRabbitListeningContainer |
---|
AbstractRabbitListeningContainer.SharedConnectionNotInitializedException |
Field Summary |
---|
Fields inherited from class org.springframework.amqp.rabbit.support.RabbitAccessor |
---|
logger |
Constructor Summary | |
---|---|
AbstractMessageListenerContainer()
|
Method Summary | |
---|---|
protected void |
checkMessageListener(Object messageListener)
Check the given message listener, throwing an exception if it does not correspond to a supported listener type. |
protected void |
commitIfNecessary(com.rabbitmq.client.Channel channel,
Message message)
Perform a commit or message acknowledgement, as appropriate. |
protected void |
doExecuteListener(com.rabbitmq.client.Channel channel,
Message message)
Execute the specified listener, committing or rolling back the transaction afterwards (if necessary). |
protected void |
doInvokeListener(ChannelAwareMessageListener listener,
com.rabbitmq.client.Channel channel,
Message message)
Invoke the specified listener as Spring ChannelAwareMessageListener, exposing a new Rabbit Session (potentially with its own transaction) to the listener if demanded. |
protected void |
doInvokeListener(MessageListener listener,
Message message)
Invoke the specified listener as Spring Rabbit MessageListener. |
protected void |
executeListener(com.rabbitmq.client.Channel channel,
Message message)
Execute the specified listener, committing or rolling back the transaction afterwards (if necessary). |
Object |
getMessageListener()
Return the message listener object to register. |
String |
getQueueName()
Return the name of the queue to receive messages from. |
protected String |
getRequiredQueueName()
|
protected void |
handleListenerException(Throwable ex)
Handle the given exception that arose during listener execution. |
protected void |
invokeErrorHandler(Throwable ex)
Invoke the registered ErrorHandler, if any. |
protected void |
invokeListener(com.rabbitmq.client.Channel channel,
Message message)
Invoke the specified listener: either as standard MessageListener or (preferably) as SessionAwareMessageListener. |
protected boolean |
isChannelLocallyTransacted(com.rabbitmq.client.Channel channel)
Check whether the given Channel is locally transacted, that is, whether its transaction is managed by this listener container's Channel handling and not by an external transaction coordinator. |
boolean |
isExposeListenerChannel()
Return whether to expose the listener Channel to a registered
ChannelAwareMessageListener . |
protected void |
rollbackIfNecessary(com.rabbitmq.client.Channel channel)
Perform a rollback, if appropriate. |
protected void |
rollbackOnExceptionIfNecessary(com.rabbitmq.client.Channel channel,
Message message,
Throwable ex)
Perform a rollback, handling rollback exceptions properly. |
void |
setErrorHandler(ErrorHandler errorHandler)
Set an ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. |
void |
setExposeListenerChannel(boolean exposeListenerChannel)
Set whether to expose the listener Rabbit Channel to a registered ChannelAwareMessageListener as well as to
RabbitTemplate calls. |
void |
setMessageListener(Object messageListener)
Set the message listener implementation to register. |
void |
setQueueName(String queueName)
Set the name of the queue to receive messages from. |
void |
setQueues(Queue... queues)
|
Methods inherited from class org.springframework.amqp.rabbit.listener.AbstractRabbitListeningContainer |
---|
afterPropertiesSet, createSharedConnection, destroy, doInitialize, doShutdown, doStart, doStop, establishSharedConnection, getBeanName, getPhase, getSharedConnection, initialize, isActive, isAutoStartup, isRunning, prepareSharedConnection, refreshSharedConnection, runningAllowed, setAutoStartup, setBeanName, setPhase, sharedConnectionEnabled, shutdown, start, stop, stop, stopSharedConnection, validateConfiguration |
Methods inherited from class org.springframework.amqp.rabbit.support.RabbitAccessor |
---|
convertRabbitAccessException, createChannel, createConnection, getChannel, getConnection, getConnectionFactory, getTransactionalResourceHolder, isChannelTransacted, setChannelTransacted, setConnectionFactory |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public AbstractMessageListenerContainer()
Method Detail |
---|
public void setQueueName(String queueName)
queueName
- the desired queue (can not be null
)public void setQueues(Queue... queues)
public String getQueueName()
protected String getRequiredQueueName()
public boolean isExposeListenerChannel()
Channel
to a registered
ChannelAwareMessageListener
.
public void setExposeListenerChannel(boolean exposeListenerChannel)
ChannelAwareMessageListener
as well as to
RabbitTemplate
calls.
Default is "true", reusing the listener's Channel
. Turn this off
to expose a fresh Rabbit Channel fetched from the same underlying Rabbit
Connection
instead.
Note that Channels managed by an external transaction manager will always
get exposed to
RabbitTemplate
calls. So in
terms of RabbitTemplate exposure, this setting only affects locally
transacted Channels.
ChannelAwareMessageListener
public void setMessageListener(Object messageListener)
MessageListener
object or a Spring
ChannelAwareMessageListener
object.
IllegalArgumentException
- if the supplied listener is not a
MessageListener
or a ChannelAwareMessageListener
MessageListener
,
ChannelAwareMessageListener
protected void checkMessageListener(Object messageListener)
By default, only a Spring MessageListener
object or a Spring
SessionAwareMessageListener
object will be accepted.
messageListener
- the message listener object to check
IllegalArgumentException
- if the supplied listener is not a
MessageListener or SessionAwareMessageListenerMessageListener
,
ChannelAwareMessageListener
public Object getMessageListener()
public void setErrorHandler(ErrorHandler errorHandler)
protected void invokeErrorHandler(Throwable ex)
ex
- the uncaught error that arose during Rabbit processing.setErrorHandler(org.springframework.util.ErrorHandler)
protected void executeListener(com.rabbitmq.client.Channel channel, Message message) throws Throwable
channel
- the Rabbit Channel to operate onmessage
- the received Rabbit Message
Throwable
invokeListener(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message)
,
commitIfNecessary(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message)
,
rollbackOnExceptionIfNecessary(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message, java.lang.Throwable)
,
handleListenerException(java.lang.Throwable)
protected void doExecuteListener(com.rabbitmq.client.Channel channel, Message message) throws Throwable
channel
- the Rabbit Channel to operate onmessage
- the received Rabbit Message
Throwable
Exception
- if thrown by Rabbit API methodsinvokeListener(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message)
,
commitIfNecessary(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message)
,
rollbackOnExceptionIfNecessary(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message, java.lang.Throwable)
,
RabbitAccessor.convertRabbitAccessException(java.lang.Exception)
protected void invokeListener(com.rabbitmq.client.Channel channel, Message message) throws Exception
channel
- the Rabbit Channel to operate onmessage
- the received Rabbit Message
Exception
Exception
- if thrown by Rabbit API methodssetMessageListener(java.lang.Object)
protected void doInvokeListener(ChannelAwareMessageListener listener, com.rabbitmq.client.Channel channel, Message message) throws Exception
listener
- the Spring ChannelAwareMessageListener to invokechannel
- the Rabbit Channel to operate onmessage
- the received Rabbit Message
Exception
- if thrown by Rabbit API methodsChannelAwareMessageListener
,
setExposeListenerChannel(boolean)
protected void doInvokeListener(MessageListener listener, Message message)
Default implementation performs a plain invocation of the
onMessage
method.
listener
- the Rabbit MessageListener to invokemessage
- the received Rabbit MessageMessageListener.onMessage(org.springframework.amqp.core.Message)
protected void commitIfNecessary(com.rabbitmq.client.Channel channel, Message message) throws IOException
channel
- the Rabbit channel to commitmessage
- the Message to acknowledge
IOException
protected void rollbackIfNecessary(com.rabbitmq.client.Channel channel)
channel
- the Rabbit Channel to roll backprotected void rollbackOnExceptionIfNecessary(com.rabbitmq.client.Channel channel, Message message, Throwable ex) throws Exception
channel
- the Rabbit Channel to roll backex
- the thrown application exception or error
Exception
- in case of a rollback errorprotected boolean isChannelLocallyTransacted(com.rabbitmq.client.Channel channel)
Note:This method is about finding out whether the Channel's transaction is local or externally coordinated.
channel
- the Channel to check
RabbitAccessor.isChannelTransacted()
protected void handleListenerException(Throwable ex)
The default implementation logs the exception at error level, not propagating it to the Rabbit provider - assuming that all handling of acknowledgment and/or transactions is done by this listener container. This can be overridden in subclasses.
ex
- the exception to handle
|
Spring AMQP | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |