Details
-
New Feature
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.10.7
-
None
-
Unknown
Description
We often face the same issue when it comes to aggregating multiple records into a single file.
A very common requirement that we have is that the aggregated files that we produce must not be bigger than a certain size (for example, 10MB). Relying on a predefined maximum of records or doing the size check after the aggregation is not option.
So ideally, before an exchange (holding a single file record) gets aggregated by a Camel aggregator, we should have a way to verify that the new exchange will fit into the current aggregate. If not, the current aggregate should be completed. And only after that, the new exchange could be aggregated.
This could be easily achieved if Camel's aggregator would have a new optional attribute 'preCompletionPredicate'. This predicate could be have an interface/signature as follows:
boolean preComplete(Exchange aggregate, Exchange newExchange);
The predicate implementation would then be able to use information from both exchanges to know if the aggregate should be completed before aggregating the new exchange or not.