Daniel Kulp created CAMEL-8423:
----------------------------------

             Summary: Enhance AggregationStrategy to allow it to determine if 
aggregation is complete
                 Key: CAMEL-8423
                 URL: https://issues.apache.org/jira/browse/CAMEL-8423
             Project: Camel
          Issue Type: Improvement
          Components: camel-core
            Reporter: Daniel Kulp
            Assignee: Daniel Kulp
             Fix For: 2.15.0


Currently, the Aggregation component allows the completion to be triggered on 
either a Timeout, a set number of aggregations, or via use of a Predicate to 
determine the completion.   In some cases the AggregationStrategy itself may be 
the best place to determine if the aggregation is complete.

One example:  adding a "data size limit" as the trigger.   The aggregation 
component has no concept of the "size" of the data (nor should it) as it's the 
AggregationStrategy object that handles the actual aggregation of the data.   
If during the Aggregating of the exchanges if a size limit (or other limit) is 
achieved, it would be good to be able to flag the exchange as ready.

This can be somewhat done as a predicate that looks at the aggregated exchange 
and looks at the size.   However, this requires the user to implement two 
objects and configure two things for the aggregator.  One proposal would be 
that if the user supplied AggregationStrategy implements Predicate and no 
completionPredicate is supplied, the given AggregationStrategy is also set as 
the completionPredicate.   Similarly, a new interface could be introduced for 
this if using Predicate is a concern.

Another strategy would be to set a property on the returned exchange during 
aggregation that would mark it as "done" and have the Aggregator look for that 
property.  





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to