[ https://issues.apache.org/jira/browse/CAMEL-4118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13064832#comment-13064832 ]
Christian Müller commented on CAMEL-4118: ----------------------------------------- Hey Ben! I had a quick look on it. Good work. Here are my comments: Instead of writing: {code:java} String completeAllGroups = (String) exchange.getIn().getHeader(Exchange.AGGREGATION_COMPLETE_ALL_GROUPS); if (completeAllGroups != null && completeAllGroups.equals("true")) { forceCompletionOfAllGroups(); return; } {code} you could write: {code:java} Boolean completeAllGroups = exchange.getIn().getHeader(Exchange.AGGREGATION_COMPLETE_ALL_GROUPS, Boolean.class); if (completeAllGroups == Boolean.TRUE) { forceCompletionOfAllGroups(); return; } {code} and also benefit from the Camel type converter mechanism (the user can set the header as a boolean or String value). AggregateForceCompletionHeaderTest and AggregateForceCompletionOnStopTest didn't check the header "Exchange.AGGREGATED_COMPLETED_BY" which is/should be set. Do we need the MyCompletionProcessor for the tests or could we also use the Mock component? Sorry for being petty... ;-) > 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 > > Attachments: CAMEL-4097-4118.patch > > > 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