|
Spring AMQP | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.amqp.rabbit.connection.RabbitAccessor
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer
public class SimpleMessageListenerContainer
Nested Class Summary | |
---|---|
static interface |
SimpleMessageListenerContainer.ContainerDelegate
|
Nested classes/interfaces inherited from class org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer |
---|
AbstractMessageListenerContainer.SharedConnectionNotInitializedException |
Field Summary | |
---|---|
static int |
DEFAULT_PREFETCH_COUNT
|
static long |
DEFAULT_RECEIVE_TIMEOUT
|
static long |
DEFAULT_RECOVERY_INTERVAL
The default recovery interval: 5000 ms = 5 seconds. |
static long |
DEFAULT_SHUTDOWN_TIMEOUT
|
Fields inherited from class org.springframework.amqp.rabbit.connection.RabbitAccessor |
---|
logger |
Constructor Summary | |
---|---|
SimpleMessageListenerContainer()
Default constructor for convenient dependency injection via setters. |
|
SimpleMessageListenerContainer(ConnectionFactory connectionFactory)
Create a listener container from the connection factory (mandatory). |
Method Summary | |
---|---|
protected BlockingQueueConsumer |
createBlockingQueueConsumer()
|
protected void |
doInitialize()
Creates the specified number of concurrent consumers, in the form of a Rabbit Channel plus associated MessageConsumer. |
protected void |
doShutdown()
Close the registered invokers. |
protected void |
doStart()
Re-initializes this container's Rabbit message consumers, if not initialized already. |
protected void |
doStop()
This method is invoked when the container is stopping. |
int |
getActiveConsumerCount()
|
protected void |
handleStartupFailure(Throwable t)
Wait for a period determined by the recoveryInterval to give the container a
chance to recover from consumer startup failure, e.g. if the broker is down. |
protected void |
initializeConsumers()
|
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. |
void |
setAdviceChain(org.aopalliance.aop.Advice[] adviceChain)
Public setter for the Advice to apply to listener executions. |
void |
setConcurrentConsumers(int concurrentConsumers)
Specify the number of concurrent consumers to create. |
void |
setMessagePropertiesConverter(MessagePropertiesConverter messagePropertiesConverter)
Set the MessagePropertiesConverter for this listener container. |
void |
setPrefetchCount(int prefetchCount)
Tells the broker how many messages to send to each consumer in a single request. |
void |
setReceiveTimeout(long receiveTimeout)
|
void |
setRecoveryInterval(long recoveryInterval)
Specify the interval between recovery attempts, in milliseconds. |
void |
setShutdownTimeout(long shutdownTimeout)
The time to wait for workers in milliseconds after the container is stopped, and before the connection is forced closed. |
void |
setTaskExecutor(Executor taskExecutor)
|
void |
setTransactionAttribute(TransactionAttribute transactionAttribute)
|
void |
setTransactionManager(PlatformTransactionManager transactionManager)
|
void |
setTxSize(int txSize)
Tells the container how many messages to process in a single transaction (if the channel is transactional). |
protected boolean |
sharedConnectionEnabled()
Always use a shared Rabbit Connection. |
protected void |
validateConfiguration()
Avoid the possibility of not configuring the CachingConnectionFactory in sync with the number of concurrent consumers. |
Methods inherited from class org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer |
---|
afterPropertiesSet, checkMessageListener, destroy, doInvokeListener, doInvokeListener, executeListener, getAcknowledgeMode, getBeanName, getMessageListener, getPhase, getQueueNames, getRequiredQueueNames, handleListenerException, initialize, invokeErrorHandler, isActive, isAutoStartup, isExposeListenerChannel, isRunning, setAcknowledgeMode, setAutoStartup, setBeanName, setErrorHandler, setExposeListenerChannel, setMessageListener, setPhase, setQueueNames, setQueues, shutdown, start, stop, stop, wrapToListenerExecutionFailedExceptionIfNeeded |
Methods inherited from class org.springframework.amqp.rabbit.connection.RabbitAccessor |
---|
convertRabbitAccessException, 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 |
Field Detail |
---|
public static final long DEFAULT_RECEIVE_TIMEOUT
public static final int DEFAULT_PREFETCH_COUNT
public static final long DEFAULT_SHUTDOWN_TIMEOUT
public static final long DEFAULT_RECOVERY_INTERVAL
Constructor Detail |
---|
public SimpleMessageListenerContainer()
public SimpleMessageListenerContainer(ConnectionFactory connectionFactory)
connectionFactory
- the ConnectionFactory
Method Detail |
---|
public void setAdviceChain(org.aopalliance.aop.Advice[] adviceChain)
Public setter for the Advice
to apply to listener executions. If txSize>1
then
multiple listener executions will all be wrapped in the same advice up to that limit.
If a transactionManager
is provided as well, then
separate advice is created for the transaction and applied first in the chain. In that case the advice chain
provided here should not contain a transaction interceptor (otherwise two transactions would be be applied).
adviceChain
- the advice chain to setpublic void setRecoveryInterval(long recoveryInterval)
public void setConcurrentConsumers(int concurrentConsumers)
Raising the number of concurrent consumers is recommended in order to scale the consumption of messages coming in from a queue. However, note that any ordering guarantees are lost once multiple consumers are registered. In general, stick with 1 consumer for low-volume queues.
public void setReceiveTimeout(long receiveTimeout)
public void setShutdownTimeout(long shutdownTimeout)
shutdownTimeout
- the shutdown timeout to setpublic void setTaskExecutor(Executor taskExecutor)
public void setPrefetchCount(int prefetchCount)
the transaction size
.
prefetchCount
- the prefetch countpublic void setTxSize(int txSize)
the prefetch count
.
txSize
- the transaction sizepublic void setTransactionManager(PlatformTransactionManager transactionManager)
public void setTransactionAttribute(TransactionAttribute transactionAttribute)
transactionAttribute
- the transaction attribute to setpublic void setMessagePropertiesConverter(MessagePropertiesConverter messagePropertiesConverter)
MessagePropertiesConverter
for this listener container.
protected void validateConfiguration()
validateConfiguration
in class AbstractMessageListenerContainer
protected final boolean sharedConnectionEnabled()
protected void doInitialize() throws Exception
doInitialize
in class AbstractMessageListenerContainer
Exception
AbstractMessageListenerContainer.SharedConnectionNotInitializedException
@ManagedMetric(metricType=GAUGE) public int getActiveConsumerCount()
protected void doStart() throws Exception
doStart
in class AbstractMessageListenerContainer
Exception
AbstractMessageListenerContainer.SharedConnectionNotInitializedException
- if thrown by Rabbit API methodsprotected void doStop()
AbstractMessageListenerContainer
doStop
in class AbstractMessageListenerContainer
protected void doShutdown()
AbstractMessageListenerContainer
Subclasses need to implement this method for their specific invoker management process.
A shared Rabbit Connection, if any, will automatically be closed afterwards.
doShutdown
in class AbstractMessageListenerContainer
AbstractMessageListenerContainer.shutdown()
protected void initializeConsumers()
protected boolean isChannelLocallyTransacted(com.rabbitmq.client.Channel channel)
AbstractMessageListenerContainer
Note:This method is about finding out whether the Channel's transaction is local or externally coordinated.
isChannelLocallyTransacted
in class AbstractMessageListenerContainer
channel
- the Channel to check
RabbitAccessor.isChannelTransacted()
protected BlockingQueueConsumer createBlockingQueueConsumer()
protected void invokeListener(com.rabbitmq.client.Channel channel, Message message) throws Exception
AbstractMessageListenerContainer
invokeListener
in class AbstractMessageListenerContainer
channel
- the Rabbit Channel to operate onmessage
- the received Rabbit Message
AbstractMessageListenerContainer.SharedConnectionNotInitializedException
Exception
AbstractMessageListenerContainer.setMessageListener(java.lang.Object)
protected void handleStartupFailure(Throwable t) throws Exception
recoveryInterval
to give the container a
chance to recover from consumer startup failure, e.g. if the broker is down.
t
- the exception that stopped the startup
Exception
- if the shared connection still can't be established
|
Spring AMQP | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |