Dear Claus, I'm trying to use the suggested flag eagerCheckCompletion="true" with no success. I still get: org.apache.camel.CamelExchangeException: Invalid correlation key. Exchange[test_complete.csv] at org.apache.camel.processor.aggregate.AggregateProcessor.doProcess(AggregateProcessor.java:204) at org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:179) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
Here: org.apache.camel.processor.aggregate.AggregateProcessor.doProcess(Exchange): 197 the correlation id is still evaluated but it is actually not existent so it fails. Using ignoreInvalidCorrelationKeys does not solve the problem because the aggregation is never completed. Do we need to add a new flag or modify the eagerCheckCompletion workflow? Any other clean solution? Cheers, Carlo 2014-06-06 15:04 GMT+02:00 Claus Ibsen <claus.ib...@gmail.com>: > Hi > > See the aggregator docs > http://camel.apache.org/aggregator2 > > there is an eagerCheckCompletion option > > On Fri, Jun 6, 2014 at 2:46 PM, carlo cancellieri > <c.cancelli...@proximainformatica.com> wrote: > > Hi list, > > I'm using the following aggregation: > > > > > > <route> > > <from uri="seda:aggregation" /> > > <!-- aggregate using our strategy and leveldb repo --> > > <aggregate strategyRef="rowAggregationStrategy" > > aggregationRepositoryRef="aggregationRepository" > > completionFromBatchConsumer="false"> > > <!-- correlate by header with the key id --> > > <correlationExpression> > > <header>aggrId</header> > > </correlationExpression> > > > > <completionPredicate> > > <simple>${in.header.complId} == 'END_${exchangeId}'</simple> > > </completionPredicate> > > <!-- send aggregated messages to the mock endpoint --> > > <to uri="seda:marshaller" /> > > </aggregate> > > </route> > > > > When the aggregation may be concluded I send an empty message with the > > 'complId' set to the expected value but currently I get: > > > > org.apache.camel.CamelExchangeException: Invalid correlation key. > > Exchange[test_complete.csv] > > at > > > org.apache.camel.processor.aggregate.AggregateProcessor.doProcess(AggregateProcessor.java:204) > > at > > > org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:179) > > at > > > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) > > > > The question is why the completionPredicate is evaluated after the > > aggregation? > > At this time I've no 'aggrId' to use (this is only a fake message used as > > event). > > A possible solution is adding a fake aggrId but I wonder what could be > the > > right way to solve this case. > > I've already tested completionFromBatchConsumer the with no success. > > > > -- > > Dott. Carlo Cancellieri > > *skype*: ccancellieri > > *Twitter*: @cancellieric > > *LinkedIn*: http://it.linkedin.com/in/ccancellieri/ > > > > -- > Claus Ibsen > ----------------- > Red Hat, Inc. > Email: cib...@redhat.com > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen > hawtio: http://hawt.io/ > fabric8: http://fabric8.io/ > -- Dott. Carlo Cancellieri *skype*: ccancellieri *Twitter*: @cancellieric *LinkedIn*: http://it.linkedin.com/in/ccancellieri/