Hi Just another update on #3. I had some more fun with Camel and introduced a async() DSL in the route, to turn the route into async from the point forward. The unit test code explains it, and gives a hint how we can leverage this.
Any thoughts? public class AsyncRouteTest extends ContextTestSupport { public void testAsyncRoute() throws Exception { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedBodiesReceived("Bye World"); // send a request reply to the direct start endpoint Object out = template.requestBody("direct:start", "Hello"); // as it turns into a async route later we get a Future as response assertIsInstanceOf(Future.class, out); // cast to future Future future = (Future) out; System.out.println("Look ma I can do other stuff while the async runs"); // and use future to get the response Exchange response = (Exchange) future.get(); // get the response from the OUT message // TODO: add type converters so we can leverage them with Future to get the // body response more easily assertEquals("Bye World", response.getOut().getBody()); assertMockEndpointsSatisfied(); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { // we start this route async from("direct:start") // we play a bit with the message .transform(body().append(" World")) // now turn the route into async from this point forward // the caller will have a Future<Exchange> returned as response in OUT // to be used to grap the async response when he fell like it .async() // from this point forward this is the async route doing its work // so we do a bit of delay to simulate heavy work that takes time .delay(1000) // and we also play with the message so we can prepare a response .process(new Processor() { public void process(Exchange exchange) throws Exception { assertEquals("Hello World", exchange.getIn().getBody()); exchange.getOut().setBody("Bye World"); } // and we use mocks for unit testing }).to("mock:result"); } }; } -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration