And it only occurs when you use the intercept strategy? If you remove it, does it work then? Sending to the mock:error endpoint?
On Thu, Aug 12, 2010 at 12:50 PM, Charles Moulliard <[email protected]> wrote: > Hi, > > We get the following error when we try to use the following camel route + > test > Is it a bad configuration or a bug ? > > 1) Error > > 40781 [main] INFO org.apache.camel.impl.DefaultCamelContext - Route: route1 > started and consuming from: Endpoint[direct://in-only] > 40781 [main] INFO org.apache.camel.impl.DefaultCamelContext - Route: route2 > started and consuming from: Endpoint[direct://start] > 40781 [main] INFO org.apache.camel.impl.DefaultCamelContext - Route: route3 > started and consuming from: Endpoint[direct://file] > 40781 [main] INFO org.apache.camel.impl.DefaultCamelContext - Started 3 > routes > 40781 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel > 2.4.0 (CamelContext: camel-1) started in 0.000 seconds > 40781 [main] INFO org.apache.jackrabbit.core.TransientRepository - Session > opened > 40797 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - > Processing Exchange > 40797 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - Node > path - Active Exchange: a23af01b-64a6-49c7-80c9-15177d945ee5 > 40797 [main] INFO org.apache.jackrabbit.core.TransientRepository - Session > opened > 40797 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - > ENDPOINT: direct > OrderFailedExeption: Cannot order: fail > 40938 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - > Processing Exchange > 40938 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - Node > path - Active Exchange: a23af01b-64a6-49c7-80c9-15177d945ee5 > 40938 [main] INFO org.apache.jackrabbit.core.TransientRepository - Session > opened > 40938 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - > ENDPOINT: direct > Order ERROR > 41000 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - > Processing Exchange > 41000 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - Node > path - Active Exchange: a23af01b-64a6-49c7-80c9-15177d945ee5 > 41000 [main] INFO org.apache.jackrabbit.core.TransientRepository - Session > opened > 41000 [main] INFO org.fusesource.esb.audit.camel.AuditInterceptor - > ENDPOINT: direct > 41047 [main] ERROR org.apache.camel.processor.DefaultErrorHandler - Failed > delivery for exchangeId: a23af01b-64a6-49c7-80c9-15177d945ee5. Exhausted > after delivery attempt > : 1 caught: java.lang.IllegalStateException: SendProcessor has not been > started: sendTo(Endpoint[mock://error]) > java.lang.IllegalStateException: SendProcessor has not been started: > sendTo(Endpoint[mock://error]) > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:94) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99) > at > org.apache.camel.processor.InterceptorToAsyncProcessorBridge.process(InterceptorToAsyncProcessorBridge.java:67) > at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:58) > at > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:90) > at > org.fusesource.esb.audit.camel.AuditInterceptor.process(AuditInterceptor.java:78) > at > org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50) > at > org.apache.camel.processor.InterceptorToAsyncProcessorBridge.process(InterceptorToAsyncProcessorBridge.java:76) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:290) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:202) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:256) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:143) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:78) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at > org.apache.camel.processor.RedeliveryErrorHandler.deliverToFailureProcessor(RedeliveryErrorHandler.java:582) > at > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:236) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:202) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:256) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:143) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:78) > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:113) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70) > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61) > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:99) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85) > at > org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:63) > at > org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:333) > at > org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:304) > at > org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:208) > at > org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:303) > at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:154) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:110) > at > org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:149) > at > org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:145) > at > org.fusesource.esb.audit.camel.AuditInterceptorWithInOnlyTest.testInOnlyWithErrorHandler(AuditInterceptorWithInOnlyTest.java:55) > > 2) Camel route > > protected RouteBuilder createRouteBuilder() throws Exception { > return new RouteBuilder() { > �...@override > public void configure() throws Exception { > > getContext().addInterceptStrategy( > new AuditInterceptStrategy(getRepository())); > onException(OrderFailedException.class).handled(true).bean( > MockOrderService.class, > "orderFailed").to("mock:error"); > // let's not handle any runtime exceptions > onException(RuntimeCamelException.class).handled(false); > > from("direct:in-only").to("mock:in-only"); > > errorHandler(deadLetterChannel("mock:error") > .maximumRedeliveries(1)); > from("direct:start") > .bean(MockOrderService.class, "handleOrder").to( > "mock:result"); > from("direct:file").to("mock:file").throwException( > new RuntimeCamelException( > "Something is completely going wrong > here!")); > } > }; > } > > 3) test code > > public void testInOnlyWithErrorHandler() throws Exception { > > MockEndpoint error = getMockEndpoint("mock:error"); > error.expectedMessageCount(1); > MockEndpoint result = getMockEndpoint("mock:result"); > result.expectedMessageCount(0); > template.sendBodyAndHeader("direct:start", "Order: fail", > "customerid", "555"); = line 55 where error is reported > > error.assertIsSatisfied(); > result.assertIsSatisfied(); > > Exchange exchange = error.getExchanges().get(0); > System.out.println("PROPERTIES ERROR: " + > exchange.getProperties().toString()); > assertStatus(exchange, ExchangeStatus.Done.toString()); > > } > > Kind regards, > > Charles Moulliard > > Senior Enterprise Architect (J2EE, .NET, SOA) > Apache Camel - Karaf - ServiceMix Committer > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Blog : http://cmoulliard.blogspot.com | Twitter : > http://twitter.com/cmoulliard > Linkedin : http://www.linkedin.com/in/charlesmoulliard | Skype: cmoulliard > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
