Class AbstractAggregatingMessageGroupProcessor

java.lang.Object
org.springframework.integration.aggregator.AbstractAggregatingMessageGroupProcessor
All Implemented Interfaces:
Aware, BeanFactoryAware, MessageGroupProcessor
Direct Known Subclasses:
DefaultAggregatingMessageGroupProcessor, ExpressionEvaluatingMessageGroupProcessor, FileAggregatingMessageGroupProcessor, MethodInvokingMessageGroupProcessor

public abstract class AbstractAggregatingMessageGroupProcessor extends Object implements MessageGroupProcessor, BeanFactoryAware
Base class for MessageGroupProcessor implementations that aggregate the group of Messages into a single Message.
Since:
2.0
Author:
Iwein Fuld, Alexander Peters, Mark Fisher, Dave Syer, Gary Russell, Artem Bilan
  • Field Details

    • logger

      protected final Log logger
  • Constructor Details

    • AbstractAggregatingMessageGroupProcessor

      public AbstractAggregatingMessageGroupProcessor()
  • Method Details

    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory) throws BeansException
      Specified by:
      setBeanFactory in interface BeanFactoryAware
      Throws:
      BeansException
    • setHeadersFunction

      public void setHeadersFunction(Function<MessageGroup,Map<String,Object>> headersFunction)
      Specify a Function to map MessageGroup into composed headers for output message.
      Parameters:
      headersFunction - the Function to use.
      Since:
      5.2
    • getHeadersFunction

      protected Function<MessageGroup,Map<String,Object>> getHeadersFunction()
    • getMessageBuilderFactory

      protected MessageBuilderFactory getMessageBuilderFactory()
    • processMessageGroup

      public final Object processMessageGroup(MessageGroup group)
      Description copied from interface: MessageGroupProcessor
      Process the given MessageGroup. Implementations are free to return as few or as many messages based on the invocation as needed. For example an aggregating processor will return only a single message representing the group, while a resequencing processor will return all messages whose preceding sequence has been satisfied.

      If a multiple messages are returned the return value must be a Collection<Message>.

      Specified by:
      processMessageGroup in interface MessageGroupProcessor
      Parameters:
      group - The message group.
      Returns:
      The result of processing the group.
    • aggregateHeaders

      protected Map<String,Object> aggregateHeaders(MessageGroup group)
      This default implementation simply returns all headers that have no conflicts among the group. An absent header on one or more Messages within the group is not considered a conflict. Subclasses may override this method with more advanced conflict-resolution strategies if necessary.
      Parameters:
      group - The message group.
      Returns:
      The aggregated headers.
    • aggregatePayloads

      protected abstract Object aggregatePayloads(MessageGroup group, Map<String,Object> defaultHeaders)