[ 
https://issues.apache.org/jira/browse/CAMEL-4118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13063605#comment-13063605
 ] 

Ben O'Day commented on CAMEL-4118:
----------------------------------

thanks Christian.  for splitter(), you could just use the 
Exchange.SPLIT_COMPLETE header that is included in the last message, like 
this...

from("file:/tmp/myBigFiles")
.split(body().tokenize("\n"))
.aggregate(constant(true), new MyAggregationStrategy())
    
.eagerCheckCompletion().completionPredicate(header(Exchange.SPLIT_COMPLETE).isEqualTo(true))

If you are doing other custom splitting of messages, then I'd think you'd be 
able to set a header on the last message as easily as you could send a separate 
"flush" message...I guess it depends on what other EIPs are involved, etc...




> 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


Reply via email to