public class CorrelatingMessageBarrier extends AbstractMessageHandler implements MessageSource<Object>
ReleaseStrategy
.
When a message can be processed it is up to the client to take care of the locking (potentially from the
ReleaseStrategy's
canRelease(..)
method).
This class differs from AbstractCorrelatingMessageHandler in that it completely decouples the receiver and the sender. It can be applied in scenarios where completion of a message group is not well defined but only a certain amount of messages for any given correlation key may be processed at a time.
The messages will be stored in a MessageStore
for each correlation key.
AbstractCorrelatingMessageHandler
IntegrationManagement.ManagementOverrides
EXPRESSION_PARSER, logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
Constructor and Description |
---|
CorrelatingMessageBarrier() |
CorrelatingMessageBarrier(MessageGroupStore store) |
Modifier and Type | Method and Description |
---|---|
protected void |
handleMessageInternal(Message<?> message) |
Message<Object> |
receive()
Retrieve the next available message from this source.
|
void |
setCorrelationStrategy(CorrelationStrategy correlationStrategy)
Set the CorrelationStrategy to be used to determine the correlation key for incoming messages
|
void |
setReleaseStrategy(ReleaseStrategy releaseStrategy)
Set the ReleaseStrategy that should be used when deciding if a group in this barrier may be released.
|
handleMessage, onComplete, onError, onNext, onSubscribe
buildSendTimer, destroy, getComponentType, getIntegrationPatternType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, onInit, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getIntegrationPatternType
getThisAs
getBeanName, getComponentName
public CorrelatingMessageBarrier()
public CorrelatingMessageBarrier(MessageGroupStore store)
public void setCorrelationStrategy(CorrelationStrategy correlationStrategy)
correlationStrategy
- The correlation strategy.public void setReleaseStrategy(ReleaseStrategy releaseStrategy)
releaseStrategy
- The release strategy.protected void handleMessageInternal(Message<?> message)
handleMessageInternal
in class AbstractMessageHandler
public Message<Object> receive()
MessageSource
null
if no message is available.receive
in interface MessageSource<Object>