[ https://issues.apache.org/jira/browse/CAMEL-4118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13064055#comment-13064055 ]
Ben O'Day commented on CAMEL-4118: ---------------------------------- OK, I see the case now...the completionPredicate() only applies to the current group...not ALL groups. I'll add a check in the AggregateProcessor to look for a specific header ("completeAllGroups", etc) to force completion on ALL groups immediately. > Improve the Aggregator to be able to force a flush all aggregated exchanges > --------------------------------------------------------------------------- > > Key: CAMEL-4118 > URL: https://issues.apache.org/jira/browse/CAMEL-4118 > Project: Camel > Issue Type: Improvement > Affects Versions: 2.7.2 > Reporter: Christian Müller > Assignee: Ben O'Day > Fix For: 2.9.0 > > > Imagine you process a big file with multiple financial transactions. After > splitting the file into its individual transactions, we send they to an > aggregator to group transactions for the same card/account together. At this > time, we don't know how many transactions we have to group together. Only at > the end of processing the input file, we know that we are done. At this time, > we have to instruct the aggregator to "flush all aggregated exchanges". > A workaround for the time being is, to inject the aggregator also into a bean > which is called after the splitter. This bean can query for all keys with the > "getKeys" method and than send a "flush" exchange to the aggregator > (completionPredicate(header("flush"))). However it will still aggregate that > "flush exchange". So take care of that in your custom aggregation strategy > and enable eagerCheckCompletion, so the predicate is checked before > aggregating. > We had a similar question on the user list to "flush all aggregated > exchanges" when Camel shut down. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira