Hi I seem to be having an issue with redelivery for an endpoint being called within a dynamic router in Camel 2.14.1. My endpoint is never called more than once.
Here is my route from("direct:start").onException(IOException.class).maximumRedeliveries(-1).end() .dynamicRouter().method(Router.class).to("mock:end”); Here is my Router class, very similar to the example provided in the docs using an invoked property on the exchange. public class Router { public String route(Exchange exchange) { Boolean invoked = exchange.getProperty("invoked", Boolean.class); if (invoked == null) { exchange.setProperty("invoked", true); return "mock:route"; } else return null; } } Here is my test method @Produce(uri = "direct:start") private ProducerTemplate producerTemplate; @EndpointInject(uri = "mock:end") private MockEndpoint end; @EndpointInject(uri = "mock:route") private MockEndpoint route; @Test public void test_exception() throws InterruptedException { route.whenExchangeReceived(1, new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.setException(new IOException()); } }); route.whenExchangeReceived(2, new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setBody("mock route"); } }); route.expectedBodiesReceived("before", "before"); end.expectedBodiesReceived(“mock route"); producerTemplate.sendBody("before"); route.assertIsSatisfied(); end.assertIsSatisfied(); } I believe the problem is because the invoked property on the exchange must be surviving the redelivery and hence ends the dynamic route prematurely. How do I ensure it gets removed so the dynamic route redelivers to the mock:route?