public class QueueChannel extends AbstractPollableChannel implements QueueChannelOperations, QueueChannelManagement
Message is placed in
a BlockingQueue whose capacity may be specified upon construction.
The capacity must be a positive integer value. For a zero-capacity version
based upon a SynchronousQueue, consider the
RendezvousChannel.AbstractMessageChannel.ChannelInterceptorListIntegrationManagement.ManagementOverrides| Modifier and Type | Field and Description |
|---|---|
protected Semaphore |
queueSemaphore |
interceptors, metersEXPRESSION_PARSER, loggerMETER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAMEINDEFINITE_TIMEOUT| Constructor and Description |
|---|
QueueChannel()
Create a channel with "unbounded" queue capacity.
|
QueueChannel(int capacity)
Create a channel with the specified queue capacity.
|
QueueChannel(Queue<Message<?>> queue)
Create a channel with the specified queue.
|
| Modifier and Type | Method and Description |
|---|---|
List<Message<?>> |
clear()
Remove all
Messages from this channel. |
void |
destroy() |
protected Message<?> |
doReceive(long timeout)
Subclasses must implement this method.
|
protected boolean |
doSend(Message<?> message,
long timeout)
Subclasses must implement this method.
|
int |
getQueueSize() |
int |
getRemainingCapacity() |
List<Message<?>> |
purge(MessageSelector selector)
Remove any
Messages that are not accepted by the provided selector. |
void |
registerMetricsCaptor(MetricsCaptor metricsCaptor)
Inject a
MetricsCaptor |
addInterceptor, addInterceptor, getReceiveCount, getReceiveCountLong, getReceiveErrorCount, getReceiveErrorCountLong, hasExecutorInterceptors, receive, receive, removeInterceptor, removeInterceptor, setInterceptorsconfigureMetrics, getChannelInterceptors, getComponentType, getErrorRate, getFullChannelName, getInterceptors, getMaxSendDuration, getMeanErrorRate, getMeanErrorRatio, getMeanSendDuration, getMeanSendRate, getMetrics, getMetricsCaptor, getMinSendDuration, getOverrides, getSendCount, getSendCountLong, getSendDuration, getSendErrorCount, getSendErrorCountLong, getSendRate, getStandardDeviationSendDuration, getTimeSinceLastSend, isCountsEnabled, isLoggingEnabled, isStatsEnabled, onInit, reset, send, send, setCountsEnabled, setDatatypes, setLoggingEnabled, setMessageConverter, setShouldTrack, setStatsEnabledafterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetReceiveCount, getReceiveCountLong, getReceiveErrorCount, getReceiveErrorCountLonggetErrorRate, getMaxSendDuration, getMeanErrorRate, getMeanErrorRatio, getMeanSendDuration, getMeanSendRate, getMinSendDuration, getSendCount, getSendCountLong, getSendDuration, getSendErrorCount, getSendErrorCountLong, getSendRate, getStandardDeviationSendDuration, getTimeSinceLastSendisStatsEnabled, setStatsEnabledgetOverrides, isCountsEnabled, isLoggingEnabled, reset, setCountsEnabled, setLoggingEnabledsend, sendgetChannelInterceptorsgetBeanName, getComponentNameprotected final Semaphore queueSemaphore
public QueueChannel(Queue<Message<?>> queue)
queue - The queue.public QueueChannel(int capacity)
capacity - The capacity.public QueueChannel()
Integer.MAX_VALUE. Note that a bounded queue is recommended, since an
unbounded queue may lead to OutOfMemoryErrors.public void registerMetricsCaptor(MetricsCaptor metricsCaptor)
IntegrationManagementMetricsCaptorregisterMetricsCaptor in interface IntegrationManagementregisterMetricsCaptor in class AbstractMessageChannelmetricsCaptor - the captor.protected boolean doSend(Message<?> message, long timeout)
AbstractMessageChanneldoSend in class AbstractMessageChannelmessage - The message.timeout - The timeout.@Nullable protected Message<?> doReceive(long timeout)
AbstractPollableChanneldoReceive in class AbstractPollableChanneltimeout - The timeout.public List<Message<?>> clear()
QueueChannelOperationsMessages from this channel.clear in interface QueueChannelOperationspublic List<Message<?>> purge(MessageSelector selector)
QueueChannelOperationsMessages that are not accepted by the provided selector.purge in interface QueueChannelOperationsselector - The message selector.public int getQueueSize()
getQueueSize in interface QueueChannelOperationsgetQueueSize in interface QueueChannelManagementMessages in this channel.public int getRemainingCapacity()
getRemainingCapacity in interface QueueChannelOperationsgetRemainingCapacity in interface QueueChannelManagementpublic void destroy()
throws Exception
destroy in interface DisposableBeandestroy in class AbstractPollableChannelException