Hi Doug I have fixed it now in 1.5.1 and 2.0.
However I do think the 1.5.1-SNAPSHOT is currently not published to a maven repo. Willem wrote something about it. I don't know the status of this, but I am sure we are gonna get it sorted so the 1.x branch will have SNAPSHOTS published automatically /Claus Ibsen Apache Camel Committer Blog: http://davsclaus.blogspot.com/ On Sat, Dec 6, 2008 at 10:50 AM, Claus Ibsen <[EMAIL PROTECTED]> wrote: > Hi Doug > > Ah you have spotted a bug. Basically the aggregate has a flaw if you > don't add it in the start of the route, right after the from, so we > added this exception to force end users to have it in the start. But > the onException now injects itself in between as well, so its > from.onexception.aggreagator. So onException fools the aggreagator. > > We have a ticket to fix the aggreagator so it can be defined anywhere. > I think we need to convert the exception into a WARN logging for now. > https://issues.apache.org/activemq/browse/CAMEL-1150 > > > > /Claus Ibsen > Apache Camel Committer > Blog: http://davsclaus.blogspot.com/ > > > > On Fri, Dec 5, 2008 at 10:20 PM, dougly <[EMAIL PROTECTED]> wrote: >> >> thanks for clarifying this. >> >> However when I try to use the dead letter channel redelivery method I got >> the >> >> "Aggregator must be the only output added to the route" logged! And the >> configured routes do not start at all. >> >> Aggregator must be the only output added to the route: >> Route[[From[jms:topic:example]] -> [Exception[[class >> com.lyfam.TestException] -> [To[mock:error]]]]] >> >> Basically I like to redeliver the exchange if the SNIPPET 1 code throws >> exception. >> >> Here is the layout of my route: >> >> public void configure() throws Exception { >> errorHandler(deadLetterChannel("mock:error").maximumRedeliveries(2)); >> >> onException(TestException.class) >> .maximumRedeliveries(1) >> .to("mock:error"); >> >> >> from("imap:localhost?username=test&password=test") >> .process(new MyProcessor()) >> .to("jms:topic:example"); >> >> from("jms:topic:memo") >> .aggregator( >> new PredicateAggregationCollection( >> header("testId"), >> new AggregationStrategy() >> { >> @Override >> public Exchange aggregate(Exchange >> oldExchange, Exchange newExchange) >> { >> ...... >> return newExchange; >> } >> }, >> >> header(Exchange.AGGREGATED_COUNT).isEqualTo(2))) >> .batchTimeout(500L) >> .process(new Processor(){ >> >> // SNIPPET 1 >> @Override >> public void process(Exchange exh) throws Exception >> { >> ...... >> } >> // end SNIPPET 1 >> }); >> } >> >> Thanks for helping >> >> >> dougly wrote: >>> >>> Hi, >>> I have the following route: >>> >>> from("jms:topic:example").process(new MyProcessor()); >>> >>> If during the exchange processing exceptions are thrown, I would like to >>> be able to retry that exchange again. >>> >>> I am thinking about using the Transactional client described in EIP but >>> also I find out that Dead Letter Channel has the redelivery mechanism to >>> achieve the same thing. >>> >>> So experts, in this case should I just use the Dead Letter channel >>> redelivery to shift the exchange back to the JMS topic for another try? >>> >>> Thanks >>> >>> Doug >>> >> >> -- >> View this message in context: >> http://www.nabble.com/Redelivery-Strategy-tp20861316s22882p20862711.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >
