|
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.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 long |
DEFAULT_RECEIVE_TIMEOUT
|
Fields inherited from class org.springframework.amqp.rabbit.support.RabbitAccessor |
---|
logger |
Constructor Summary | |
---|---|
SimpleMessageListenerContainer()
|
|
SimpleMessageListenerContainer(ConnectionFactory connectionFactory)
|
Method Summary | |
---|---|
protected BlockingQueueConsumer |
createBlockingQueueConsumer(com.rabbitmq.client.Channel channel)
|
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()
Notify all invoker tasks and stop the shared Connection, if any. |
int |
getActiveConsumerCount()
|
protected void |
initializeConsumers()
|
void |
initializeProxy()
|
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[] advices)
Public setter for the Advice to apply to listener executions. |
void |
setConcurrentConsumers(int concurrentConsumers)
Specify the number of concurrent consumers to create. |
void |
setPrefetchCount(int prefetchCount)
Tells the broker how many messages to send to each consumer in a single request. |
void |
setReceiveTimeout(long receiveTimeout)
|
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.support.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
Constructor Detail |
---|
public SimpleMessageListenerContainer()
public SimpleMessageListenerContainer(ConnectionFactory connectionFactory)
Method Detail |
---|
public void setAdviceChain(org.aopalliance.aop.Advice[] advices)
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).
advices
- the advice chain to setpublic 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
.
prefetchCount
- the prefetch countpublic void setTransactionManager(PlatformTransactionManager transactionManager)
public void setTransactionAttribute(TransactionAttribute transactionAttribute)
transactionAttribute
- the transaction attribute to setprotected void validateConfiguration()
validateConfiguration
in class AbstractMessageListenerContainer
public void initializeProxy()
protected final boolean sharedConnectionEnabled()
sharedConnectionEnabled
in class AbstractMessageListenerContainer
AbstractMessageListenerContainer.getSharedConnection()
protected void doInitialize() throws Exception
doInitialize
in class AbstractMessageListenerContainer
Exception
AbstractMessageListenerContainer.SharedConnectionNotInitializedException
AbstractMessageListenerContainer.getSharedConnection()
public int getActiveConsumerCount()
protected void doStart() throws Exception
doStart
in class AbstractMessageListenerContainer
Exception
AbstractMessageListenerContainer.SharedConnectionNotInitializedException
- if thrown by Rabbit API methodsAbstractMessageListenerContainer.establishSharedConnection()
protected void doStop()
AbstractMessageListenerContainer
doStop
in class AbstractMessageListenerContainer
AbstractMessageListenerContainer.stopSharedConnection()
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() throws IOException
IOException
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(com.rabbitmq.client.Channel channel)
|
Spring AMQP | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |