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/

Reply via email to