camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Minh Tran <>
Subject dynamicRouter and redelivery
Date Wed, 18 Feb 2015 03:24:12 GMT

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



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;

	public void test_exception() throws InterruptedException {
		route.whenExchangeReceived(1, new Processor() {

			public void process(Exchange exchange) throws Exception {
				exchange.setException(new IOException());
		route.whenExchangeReceived(2, new Processor() {

			public void process(Exchange exchange) throws Exception {
				exchange.getIn().setBody("mock route");
		route.expectedBodiesReceived("before", "before");

		end.expectedBodiesReceived(“mock route");

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?
View raw message