org.springframework.integration.aggregator
Class AbstractMessageAggregator

java.lang.Object
  extended by org.springframework.integration.handler.AbstractMessageHandler
      extended by org.springframework.integration.aggregator.AbstractMessageBarrierHandler
          extended by org.springframework.integration.aggregator.AbstractMessageAggregator
All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean, MessageHandler, TaskSchedulerAware
Direct Known Subclasses:
MethodInvokingAggregator

public abstract class AbstractMessageAggregator
extends AbstractMessageBarrierHandler

A base class for aggregating a group of Messages into a single Message. Extends AbstractMessageBarrierHandler and waits for a complete group of Messages to arrive. Subclasses must provide the implementation of the aggregateMessages(List) method to combine the group of Messages into a single Message.

The default strategy for determining whether a group is complete is based on the 'sequenceSize' property of the header. Alternatively, a custom implementation of the CompletionStrategy may be provided.

All considerations regarding timeout and grouping by correlationId from AbstractMessageBarrierHandler apply here as well.

Author:
Mark Fisher, Marius Bogoevici

Field Summary
 
Fields inherited from class org.springframework.integration.aggregator.AbstractMessageBarrierHandler
barriers, DEFAULT_REAPER_INTERVAL, DEFAULT_SEND_TIMEOUT, DEFAULT_TIMEOUT, DEFAULT_TRACKED_CORRRELATION_ID_CAPACITY, logger, trackedCorrelationIds
 
Constructor Summary
AbstractMessageAggregator()
           
 
Method Summary
protected abstract  Message<?> aggregateMessages(java.util.List<Message<?>> messages)
           
protected  MessageBarrier createMessageBarrier()
          Factory method for creating a suitable MessageBarrier implementation.
protected  boolean isBarrierRemovable(java.lang.Object correlationId, java.util.List<Message<?>> releasedMessages)
          Implements the logic for deciding whether, based on what the MessageBarrier has released so far, work for the correlationId can be considered complete and the barrier can be released.
protected  Message<?>[] processReleasedMessages(java.lang.Object correlationId, java.util.List<Message<?>> messages)
          Implements the logic for transforming the released Messages.
 void setCompletionStrategy(CompletionStrategy completionStrategy)
          Strategy to determine whether the group of messages is complete.
 
Methods inherited from class org.springframework.integration.aggregator.AbstractMessageBarrierHandler
afterPropertiesSet, handleMessageInternal, isRunning, resolveReplyChannelFromMessage, setDiscardChannel, setOutputChannel, setReaperInterval, setSendPartialResultOnTimeout, setSendTimeout, setTaskScheduler, setTimeout, setTrackedCorrelationIdCapacity, start, stop
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
handleMessage
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractMessageAggregator

public AbstractMessageAggregator()
Method Detail

setCompletionStrategy

public void setCompletionStrategy(CompletionStrategy completionStrategy)
Strategy to determine whether the group of messages is complete.


createMessageBarrier

protected MessageBarrier createMessageBarrier()
Description copied from class: AbstractMessageBarrierHandler
Factory method for creating a suitable MessageBarrier implementation.

Specified by:
createMessageBarrier in class AbstractMessageBarrierHandler

isBarrierRemovable

protected boolean isBarrierRemovable(java.lang.Object correlationId,
                                     java.util.List<Message<?>> releasedMessages)
Description copied from class: AbstractMessageBarrierHandler
Implements the logic for deciding whether, based on what the MessageBarrier has released so far, work for the correlationId can be considered complete and the barrier can be released.

Specified by:
isBarrierRemovable in class AbstractMessageBarrierHandler

processReleasedMessages

protected Message<?>[] processReleasedMessages(java.lang.Object correlationId,
                                               java.util.List<Message<?>> messages)
Description copied from class: AbstractMessageBarrierHandler
Implements the logic for transforming the released Messages.

Specified by:
processReleasedMessages in class AbstractMessageBarrierHandler

aggregateMessages

protected abstract Message<?> aggregateMessages(java.util.List<Message<?>> messages)