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/

Reply via email to