Class BarrierMessageHandler
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.handler.AbstractMessageProducingHandler
org.springframework.integration.handler.AbstractReplyProducingMessageHandler
org.springframework.integration.aggregator.BarrierMessageHandler
- All Implemented Interfaces:
org.reactivestreams.Subscriber<Message<?>>
,Aware
,BeanClassLoaderAware
,BeanFactoryAware
,BeanNameAware
,DisposableBean
,InitializingBean
,ApplicationContextAware
,Ordered
,ExpressionCapable
,Orderable
,MessageProducer
,DiscardingMessageHandler
,HeaderPropagationAware
,MessageTriggerAction
,IntegrationPattern
,NamedComponent
,IntegrationManagement
,TrackableComponent
,MessageHandler
,reactor.core.CoreSubscriber<Message<?>>
public class BarrierMessageHandler extends AbstractReplyProducingMessageHandler implements MessageTriggerAction, DiscardingMessageHandler
A message handler that suspends the thread until a message with corresponding
correlation is passed into the
trigger
method or
the timeout occurs. Only one thread with a particular correlation (result of invoking
the CorrelationStrategy
) can be suspended at a time. If the inbound thread does
not arrive before the trigger thread, the latter is suspended until it does, or the
timeout occurs. Separate timeouts may be configured for request and trigger messages.
The default CorrelationStrategy
is a HeaderAttributeCorrelationStrategy
.
The default output processor is a DefaultAggregatingMessageGroupProcessor
.
- Since:
- 4.2
- Author:
- Gary Russell, Artem Bilan, Michel Jung
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
AbstractReplyProducingMessageHandler.RequestHandler
Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement
IntegrationManagement.ManagementOverrides
-
Field Summary
Fields inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler
messagingTemplate
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
-
Constructor Summary
Constructors Constructor Description BarrierMessageHandler(long timeout)
Construct an instance with the provided timeout and default correlation and output strategies.BarrierMessageHandler(long requestTimeout, long triggerTimeout)
Construct an instance with the provided timeouts and default correlation and output strategies.BarrierMessageHandler(long requestTimeout, long triggerTimeout, CorrelationStrategy correlationStrategy)
Construct an instance with the provided timeout and correlation strategy, and default output processor.BarrierMessageHandler(long requestTimeout, long triggerTimeout, MessageGroupProcessor outputProcessor)
Construct an instance with the provided timeout and output processor, and default correlation strategy.BarrierMessageHandler(long requestTimeout, long triggerTimeout, MessageGroupProcessor outputProcessor, CorrelationStrategy correlationStrategy)
Construct an instance with the provided timeout and output processor, and default correlation strategy.BarrierMessageHandler(long timeout, CorrelationStrategy correlationStrategy)
Construct an instance with the provided timeout and correlation strategy, and default output processor.BarrierMessageHandler(long timeout, MessageGroupProcessor outputProcessor)
Construct an instance with the provided timeout and output processor, and default correlation strategy.BarrierMessageHandler(long timeout, MessageGroupProcessor outputProcessor, CorrelationStrategy correlationStrategy)
Construct an instance with the provided timeout and output processor, and default correlation strategy. -
Method Summary
Modifier and Type Method Description protected Object
buildResult(Object key, Message<?> requestMessage, Message<?> releaseMessage)
Override to change the default mechanism by which the inbound and release messages are returned as a result.String
getComponentType()
Subclasses may implement this method to provide component type information.MessageChannel
getDiscardChannel()
Return the discard channel.IntegrationPatternType
getIntegrationPatternType()
Return a pattern type this component implements.protected Object
handleRequestMessage(Message<?> requestMessage)
Subclasses must implement this method to handle the request Message.void
setDiscardChannel(MessageChannel discardChannel)
Set the channel to which late arriving trigger messages are sent.void
setDiscardChannelName(String discardChannelName)
Set the name of the channel to which late arriving trigger messages are sent.void
trigger(Message<?> message)
Take some action based on the message.Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
doInit, doInvokeAdvisedRequestHandler, getBeanClassLoader, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply
Methods inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler
addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
handleMessage, onComplete, onError, onNext, onSubscribe
Methods inherited from class org.springframework.integration.handler.MessageHandlerSupport
buildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, 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, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement
getThisAs
Methods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName, getComponentName
-
Constructor Details
-
BarrierMessageHandler
public BarrierMessageHandler(long timeout)Construct an instance with the provided timeout and default correlation and output strategies.- Parameters:
timeout
- the timeout in milliseconds for both, request and trigger messages.
-
BarrierMessageHandler
Construct an instance with the provided timeout and output processor, and default correlation strategy.- Parameters:
timeout
- the timeout in milliseconds for both, request and trigger messages.outputProcessor
- the outputMessageGroupProcessor
.
-
BarrierMessageHandler
Construct an instance with the provided timeout and correlation strategy, and default output processor.- Parameters:
timeout
- the timeout in milliseconds for both, request and trigger messages.correlationStrategy
- the correlation strategy.
-
BarrierMessageHandler
public BarrierMessageHandler(long timeout, MessageGroupProcessor outputProcessor, CorrelationStrategy correlationStrategy)Construct an instance with the provided timeout and output processor, and default correlation strategy.- Parameters:
timeout
- the timeout in milliseconds for both, request and trigger messages.outputProcessor
- the outputMessageGroupProcessor
.correlationStrategy
- the correlation strategy.
-
BarrierMessageHandler
public BarrierMessageHandler(long requestTimeout, long triggerTimeout)Construct an instance with the provided timeouts and default correlation and output strategies.- Parameters:
requestTimeout
- the timeout in milliseconds when waiting for trigger message.triggerTimeout
- the timeout in milliseconds when waiting for a request message.- Since:
- 5.4
-
BarrierMessageHandler
public BarrierMessageHandler(long requestTimeout, long triggerTimeout, MessageGroupProcessor outputProcessor)Construct an instance with the provided timeout and output processor, and default correlation strategy.- Parameters:
requestTimeout
- the timeout in milliseconds when waiting for trigger message.triggerTimeout
- the timeout in milliseconds when waiting for a request message.outputProcessor
- the outputMessageGroupProcessor
.- Since:
- 5.4
-
BarrierMessageHandler
public BarrierMessageHandler(long requestTimeout, long triggerTimeout, CorrelationStrategy correlationStrategy)Construct an instance with the provided timeout and correlation strategy, and default output processor.- Parameters:
requestTimeout
- the timeout in milliseconds when waiting for trigger message.triggerTimeout
- the timeout in milliseconds when waiting for a request message.correlationStrategy
- the correlation strategy.- Since:
- 5.4
-
BarrierMessageHandler
public BarrierMessageHandler(long requestTimeout, long triggerTimeout, MessageGroupProcessor outputProcessor, CorrelationStrategy correlationStrategy)Construct an instance with the provided timeout and output processor, and default correlation strategy.- Parameters:
requestTimeout
- the timeout in milliseconds when waiting for trigger message.triggerTimeout
- the timeout in milliseconds when waiting for a request message.outputProcessor
- the outputMessageGroupProcessor
.correlationStrategy
- the correlation strategy.- Since:
- 5.4
-
-
Method Details
-
setDiscardChannelName
Set the name of the channel to which late arriving trigger messages are sent.- Parameters:
discardChannelName
- the discard channel.- Since:
- 5.0
-
setDiscardChannel
Set the channel to which late arriving trigger messages are sent.- Parameters:
discardChannel
- the discard channel.- Since:
- 5.0
-
getDiscardChannel
Description copied from interface:DiscardingMessageHandler
Return the discard channel.- Specified by:
getDiscardChannel
in interfaceDiscardingMessageHandler
- Returns:
- the channel.
- Since:
- 5.0
-
getComponentType
Description copied from class:IntegrationObjectSupport
Subclasses may implement this method to provide component type information.- Specified by:
getComponentType
in interfaceNamedComponent
- Overrides:
getComponentType
in classMessageHandlerSupport
-
getIntegrationPatternType
Description copied from interface:IntegrationPattern
Return a pattern type this component implements.- Specified by:
getIntegrationPatternType
in interfaceIntegrationPattern
- Overrides:
getIntegrationPatternType
in classAbstractReplyProducingMessageHandler
- Returns:
- the
IntegrationPatternType
this component implements.
-
handleRequestMessage
Description copied from class:AbstractReplyProducingMessageHandler
Subclasses must implement this method to handle the request Message. The return value may be a Message, a MessageBuilder, or any plain Object. The base class will handle the final creation of a reply Message from any of those starting points. If the return value is null, the Message flow will end here.- Specified by:
handleRequestMessage
in classAbstractReplyProducingMessageHandler
- Parameters:
requestMessage
- The request message.- Returns:
- The result of handling the message, or
null
.
-
buildResult
Override to change the default mechanism by which the inbound and release messages are returned as a result.- Parameters:
key
- The correlation key.requestMessage
- the inbound message.releaseMessage
- the release message.- Returns:
- the result.
-
trigger
Description copied from interface:MessageTriggerAction
Take some action based on the message.- Specified by:
trigger
in interfaceMessageTriggerAction
- Parameters:
message
- the message.
-