You get an invalid correlation key, so check that. <!-- correlate by header with the key id --> <correlationExpression> <header>aggrId</header> </correlationExpression>
Do you have that header On Fri, Jun 6, 2014 at 4:37 PM, carlo cancellieri <c.cancelli...@proximainformatica.com> wrote: > 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/ -- 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/