13.7.3. Streaming Aggregator

Class org.jboss.soa.esb.actions.StreamingAggregator
This action allows invocation of external (ESB-unaware) HTTP end-points from an ESB action pipeline. This action uses the Apache Commons HttpClient. An implementation of the Aggregator Enterprise Integration Pattern can be viewed here: http://www.enterpriseintegrationpatterns.com/Aggregator.html
The Streaming Aggregator is an improved version of the message aggregation action. Unlike the previous aggregator, the streaming aggregator does not require all messages to have complete aggregation details - messages must have the message order number and a unique aggregation id, but all messages do not need to specify how many messages will be aggregated in each message. The number of messages aggregated can be sent in a subsequent message, which is a performance improvement when dealing with extremely large files which need to be line counted or parse, or Smooks fragments which need to be split.
Data is set on the message as a property called "Aggregate.AggregateDetails" which sets should contain a org.jboss.soa.esb.actions.aggregator.AggregateDetails object.
The data has the following format:
[SeriesUUID] ":" [message-sequence] ":" [sequence-count]
If all the messages have been received by the Streaming Aggregator, it returns a new Message containing all the messages as part of the Message.Attachment list (unnamed), otherwise the action returns null.

Table 13.18. Aggregator Properties

Property Description Required
Timeout time in milliseconds before the aggregation process times out.

<action class="org.jboss.soa.esb.actions.StreamingAggregator" name="Aggregator">
    <property name="timeoutInMillies" value="60000"/>