public class DirectReplyToMessageListenerContainer extends DirectMessageListenerContainer
Address.AMQ_RABBITMQ_REPLY_TO
. Consumers are added on-demand and
terminated when idle for idleEventInterval
(default 60 seconds).Modifier and Type | Class and Description |
---|---|
static class |
DirectReplyToMessageListenerContainer.ChannelHolder
Holder for a channel; contains a consumer epoch used to prevent inappropriate release
of the consumer after it has been allocated for reuse.
|
AbstractMessageListenerContainer.SharedConnectionNotInitializedException, AbstractMessageListenerContainer.WrappedTransactionException
consumers
consumersMonitor, DEFAULT_DEBATCHING_ENABLED, DEFAULT_PREFETCH_COUNT, DEFAULT_RECOVERY_INTERVAL, DEFAULT_SHUTDOWN_TIMEOUT
logger
Constructor and Description |
---|
DirectReplyToMessageListenerContainer(ConnectionFactory connectionFactory) |
Modifier and Type | Method and Description |
---|---|
void |
addQueueNames(String... queueNames)
Add queue(s) to this container's list of queues.
|
protected void |
consumerRemoved(org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer.SimpleConsumer consumer)
Called whenever a consumer is removed.
|
protected void |
doStart()
Start this container, and notify all invoker tasks.
|
DirectReplyToMessageListenerContainer.ChannelHolder |
getChannelHolder()
Get the channel holder associated with a direct reply-to consumer; contains a
consumer epoch to prevent inappropriate releases.
|
protected void |
processMonitorTask()
Subclasses can override this to take additional actions when the monitor task runs.
|
void |
releaseConsumerFor(DirectReplyToMessageListenerContainer.ChannelHolder channelHolder,
boolean cancelConsumer,
String message)
Release the consumer associated with the channel for reuse.
|
boolean |
removeQueueNames(String... queueNames)
Remove queue(s) from this container's list of queues.
|
void |
setChannelAwareMessageListener(ChannelAwareMessageListener messageListener)
Set the
ChannelAwareMessageListener ; strongly typed version of
AbstractMessageListenerContainer.setMessageListener(Object) . |
void |
setConsumersPerQueue(int consumersPerQueue)
Each queue runs in its own consumer; set this property to create multiple
consumers for each queue.
|
void |
setMessageListener(MessageListener messageListener)
Set the
MessageListener ; strongly typed version of
AbstractMessageListenerContainer.setMessageListener(Object) . |
void |
setMessageListener(Object messageListener)
Set the message listener implementation to register.
|
void |
setMonitorInterval(long monitorInterval)
Set how often to run a task to check for failed consumers and idle containers.
|
void |
setQueueNames(String... queueName)
Set the name of the queue(s) to receive messages from.
|
actualStart, doInitialize, doRedeclareElementsIfNecessary, doShutdown, doStop, setAckTimeout, setExclusive, setMessagesPerAck, setMissingQueuesFatal, setTaskScheduler
actualInvokeListener, addQueues, afterPropertiesSet, causeChainHasImmediateAcknowledgeAmqpException, checkMessageListener, checkMismatchedQueues, configureAdminIfNeeded, destroy, doInvokeListener, doInvokeListener, executeListener, getAcknowledgeMode, getAdviceChain, getApplicationContext, getApplicationEventPublisher, getBeanName, getConnectionFactory, getConsumerArguments, getConsumerTagStrategy, getExclusiveConsumerExceptionLogger, getFailedDeclarationRetryInterval, getIdleEventInterval, getLastReceive, getListenerId, getMessageConverter, getMessageListener, getMessagePropertiesConverter, getPhase, getPrefetchCount, getQueueNames, getQueueNamesAsSet, getRabbitAdmin, getRecoveryBackOff, getRoutingConnectionFactory, getRoutingLookupKey, getShutdownTimeout, getTaskExecutor, getTransactionAttribute, getTransactionManager, handleListenerException, initialize, initializeProxy, invokeErrorHandler, invokeListener, isActive, isAlwaysRequeueWithTxManagerRollback, isAutoDeclare, isAutoStartup, isChannelLocallyTransacted, isDefaultRequeueRejected, isExclusive, isExposeListenerChannel, isForceCloseChannel, isMismatchedQueuesFatal, isMissingQueuesFatal, isMissingQueuesFatalSet, isNoLocal, isPossibleAuthenticationFailureFatal, isPossibleAuthenticationFailureFatalSet, isRunning, isStatefulRetryFatalWithNullMessageId, prepareHolderForRollback, publishConsumerFailedEvent, publishIdleContainerEvent, redeclareElementsIfNecessary, removeQueues, setAcknowledgeMode, setAdviceChain, setAfterReceivePostProcessors, setAlwaysRequeueWithTxManagerRollback, setApplicationContext, setApplicationEventPublisher, setAutoDeclare, setAutoStartup, setBeanName, setConsumerArguments, setConsumerTagStrategy, setDeBatchingEnabled, setDefaultRequeueRejected, setErrorHandler, setExclusiveConsumerExceptionLogger, setExposeListenerChannel, setFailedDeclarationRetryInterval, setForceCloseChannel, setIdleEventInterval, setListenerId, setLookupKeyQualifier, setMessageConverter, setMessagePropertiesConverter, setMismatchedQueuesFatal, setNoLocal, setPhase, setPossibleAuthenticationFailureFatal, setPrefetchCount, setQueues, setRabbitAdmin, setRecoveryBackOff, setRecoveryInterval, setShutdownTimeout, setStatefulRetryFatalWithNullMessageId, setTaskExecutor, setTransactionAttribute, setTransactionManager, setupMessageListener, shutdown, start, stop, stop, updateLastReceive, validateConfiguration, wrapToListenerExecutionFailedExceptionIfNeeded
convertRabbitAccessException, createConnection, getChannel, getConnection, getTransactionalResourceHolder, isChannelTransacted, setChannelTransacted, setConnectionFactory
public DirectReplyToMessageListenerContainer(ConnectionFactory connectionFactory)
public final void setConsumersPerQueue(int consumersPerQueue)
DirectMessageListenerContainer
setConsumersPerQueue
in class DirectMessageListenerContainer
consumersPerQueue
- the consumers per queue.public final void setMonitorInterval(long monitorInterval)
DirectMessageListenerContainer
setMonitorInterval
in class DirectMessageListenerContainer
monitorInterval
- the interval; default 10000 but it will be adjusted down
to the smallest of this, idleEventInterval
/ 2
(if configured) or
failedDeclarationRetryInterval
.public final void setQueueNames(String... queueName)
AbstractMessageListenerContainer
setQueueNames
in class DirectMessageListenerContainer
queueName
- the desired queueName(s) (can not be null
)public final void addQueueNames(String... queueNames)
AbstractMessageListenerContainer
addQueueNames
in class DirectMessageListenerContainer
queueNames
- The queue(s) to add.public final boolean removeQueueNames(String... queueNames)
AbstractMessageListenerContainer
removeQueueNames
in class DirectMessageListenerContainer
queueNames
- The queue(s) to remove.queueNames
List.public void setMessageListener(Object messageListener)
AbstractMessageListenerContainer
MessageListener
object or a Spring ChannelAwareMessageListener
object. Using the strongly typed
AbstractMessageListenerContainer.setChannelAwareMessageListener(ChannelAwareMessageListener)
is preferred.setMessageListener
in class AbstractMessageListenerContainer
messageListener
- The listener.MessageListener
,
ChannelAwareMessageListener
public void setChannelAwareMessageListener(ChannelAwareMessageListener messageListener)
AbstractMessageListenerContainer
ChannelAwareMessageListener
; strongly typed version of
AbstractMessageListenerContainer.setMessageListener(Object)
.setChannelAwareMessageListener
in class AbstractMessageListenerContainer
messageListener
- the listener.public void setMessageListener(MessageListener messageListener)
AbstractMessageListenerContainer
MessageListener
; strongly typed version of
AbstractMessageListenerContainer.setMessageListener(Object)
.setMessageListener
in class AbstractMessageListenerContainer
messageListener
- the listener.protected void doStart() throws Exception
AbstractMessageListenerContainer
doStart
in class DirectMessageListenerContainer
Exception
- if thrown by Rabbit API methodsprotected void processMonitorTask()
DirectMessageListenerContainer
processMonitorTask
in class DirectMessageListenerContainer
protected void consumerRemoved(org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer.SimpleConsumer consumer)
DirectMessageListenerContainer
consumerRemoved
in class DirectMessageListenerContainer
consumer
- the consumer.public DirectReplyToMessageListenerContainer.ChannelHolder getChannelHolder()
public void releaseConsumerFor(DirectReplyToMessageListenerContainer.ChannelHolder channelHolder, boolean cancelConsumer, String message)
channelHolder
- the channel holder.cancelConsumer
- true to cancel the consumer.message
- a message to be included in the cancel event if cancelConsumer is true.