|
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 | |
|---|---|
protected boolean |
autoAck
|
| Fields inherited from class org.springframework.amqp.rabbit.listener.AbstractRabbitListeningContainer |
|---|
lifecycleMonitor |
| 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. |
boolean |
isAutoAck()
|
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,
Throwable ex)
Perform a rollback, handling rollback exceptions properly. |
void |
setAutoAck(boolean autoAck)
|
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, getConnectionFactory, isChannelTransacted, setChannelTransacted, setConnectionFactory |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected boolean autoAck
| 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 isAutoAck()
public void setAutoAck(boolean autoAck)
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.
ChannelAwareMessageListenerpublic void setMessageListener(Object messageListener)
MessageListener object
or a Spring ChannelAwareMessageListener object.
IllegalArgumentException - if the supplied listener is not a
MessageListener or a ChannelAwareMessageListenerMessageListener,
ChannelAwareMessageListenerprotected 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 a SessionAwareMessageListenerMessageListener,
ChannelAwareMessageListenerpublic 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)
channel - the Rabbit Channel to operate onmessage - the received Rabbit MessageinvokeListener(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message),
commitIfNecessary(com.rabbitmq.client.Channel, org.springframework.amqp.core.Message),
rollbackOnExceptionIfNecessary(com.rabbitmq.client.Channel, 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, 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 invokesession - the Rabbit Channel to operate onmessage - the received Rabbit Message
Exception - if thrown by Rabbit API methodsChannelAwareMessageListener,
#setExposeListenerSession
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 Message
Exception - if thrown by RAbbit API methodsamq.MessageListener
protected void commitIfNecessary(com.rabbitmq.client.Channel channel,
Message message)
channel - the Rabbit channel to commitmessage - the Message to acknowledge
Exception - in case of commit failureprotected void rollbackIfNecessary(com.rabbitmq.client.Channel channel)
session - the Rabbit Channel to rollback
Exception - in case of a rollback error
protected void rollbackOnExceptionIfNecessary(com.rabbitmq.client.Channel channel,
Throwable ex)
throws Exception
session - the Rabbit Channel to rollbackex - 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 | |||||||||