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()
Obtain the current number of queued
Messages in this channel. |
int |
getRemainingCapacity()
Obtain the remaining capacity of this channel.
|
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, getIntegrationPatternType, getReceiveCount, getReceiveCountLong, getReceiveErrorCount, getReceiveErrorCountLong, hasExecutorInterceptors, receive, receive, removeInterceptor, removeInterceptor, setInterceptorsconfigureMetrics, getComponentType, getErrorRate, getFullChannelName, getIChannelInterceptorList, 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, getBeanDescription, 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, getReceiveErrorCountLong, receiveCount, receiveErrorCountisStatsEnabled, setStatsEnabledgetOverrides, isCountsEnabled, isLoggingEnabled, reset, setCountsEnabled, setLoggingEnabledsend, sendgetInterceptorsgetBeanName, getComponentNamesendCount, sendErrorCountprotected 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(@Nullable MessageSelector selector)
QueueChannelOperationsMessages that are not accepted by the provided selector.purge in interface QueueChannelOperationsselector - The message selector.public int getQueueSize()
QueueChannelOperationsMessages in this channel.getQueueSize in interface QueueChannelOperationsgetQueueSize in interface QueueChannelManagementMessages in this channel.public int getRemainingCapacity()
QueueChannelOperationsgetRemainingCapacity in interface QueueChannelOperationsgetRemainingCapacity in interface QueueChannelManagementpublic void destroy()
destroy in interface DisposableBeandestroy in interface IntegrationManagementdestroy in class AbstractMessageChannel