[ https://issues.apache.org/activemq/browse/CAMEL-3189?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen reassigned CAMEL-3189: ---------------------------------- Assignee: Claus Ibsen > Completed aggregated exchanges are never confirmed in the > AggregationRepository > ------------------------------------------------------------------------------- > > Key: CAMEL-3189 > URL: https://issues.apache.org/activemq/browse/CAMEL-3189 > Project: Apache Camel > Issue Type: Bug > Affects Versions: 2.3.0 > Reporter: Glenn Moss > Assignee: Claus Ibsen > > Under certain circumstances, the completed exchanges from an aggregator would > remain in the AggregationRepository and redeliver after a restart of Camel. > These exchanges had already successfully completed their route, so this > redelivery is in error. > My guess is that in the AggregationProcessor on line 374, the > AggregateOnCompletion gets added to a UnitOfWork that doesn't ever get done() > called on it... or something. > I seemed to be able to prevent the problem by changing my > AggregationStrategy. The old version looked like this: > {code} > public Exchange aggregate (Exchange oldExchange, Exchange newExchange) { > String body = ""; > if (oldExchange != null) { > body = oldExchange.getIn().getBody(String.class); > } > body += newExchange.getIn().getBody(String.class); > newExchange.getIn().setBody(body); > return newExchange; > } > {code} > You can see that the exchanges are aggregated into the newExchange. I changed > it to aggregate into the oldExchange: > {code} > public Exchange aggregate (Exchange oldExchange, Exchange newExchange) { > String body = ""; > if (oldExchange != null) { > body = oldExchange.getIn().getBody(String.class); > } else { > oldExchange = newExchange; > } > body += newExchange.getIn().getBody(String.class); > oldExchange.getIn().setBody(body); > return oldExchange; > } > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.