Hi, I was playing with a simple example using Camel and encountered an exception in one of the routes. I had only 3 simple routes and in the exception I saw that the method stack was already 65+ lines deep. The exception was thrown midway in the second route - not even the final/3rd route.
Don't you guys think this could be a problem with very long routes or where latency is concerned? Perhaps a for-loop should execute the stages in the pipeline instead of chaining the calls? My sample routes: protected static class RouteBldr extends RouteBuilder { @Override public void configure() throws Exception { from("direct:lastMile") .routeId("route.lastMile") .log("Message body: ${body}") .to("direct:localPbx"); from("direct:localPbx") .routeId("route.localPbx") .bean(new SimpleBean()) .routingSlip(header("routeCallTo")); from("direct:exchanges.sfo") .routeId("route.exchanges.sfo") .log("SFO out"); } } Exception: Exception in thread "main" org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[Message: <call><origin-country>AAA</origin-country><destination-country>BBB</destination-country></call>] at org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1161) at org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:512) at org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:441) at org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:437) at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:125) at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:130) at temp.CamelIntro.main(CamelIntro.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: java.lang.NullPointerException at temp.CamelIntro$SimpleBean.hello(CamelIntro.java:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:329) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:231) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:169) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) 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.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:318) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:209) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:305) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.processor.Pipeline.process(Pipeline.java:116) at org.apache.camel.processor.Pipeline.process(Pipeline.java:79) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:132) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) 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:69) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:114) at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:286) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:109) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) 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.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:318) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:209) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:305) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.processor.Pipeline.process(Pipeline.java:116) at org.apache.camel.processor.Pipeline.process(Pipeline.java:79) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:132) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) 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:69) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:102) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:104) 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:345) at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:317) at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:222) at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:317) at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:168) at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:110) at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:123) ... 7 more Thanks, Ashwin.