Scott, basically, its one-to-one. Camel (S)JMS + Proxies + Beans (Spring or EJB) is our standard remoting mechanism.
A client system has an outgoing route starting with a Camel proxy for FooService from("direct:fooProxy).to("sjms:queue:fooQueue") and the server system has a corresponding incoming route from("sjms:queue:fooQueue).to("ejb:FooServiceImpl"). There is one queue for each service. At the moment each service happens to be either fully InOnly or InOut, but it is very likely for a service to have mix of InOnly and InOut methods, and some of the InOut methods might by synchronous (returning T) and others asynchronous (returning Future<T>). So ideally, all these different flavours of exchanges should be handled by the same SJMS endpoint, to avoid splitting a service interface into several parts just because of a restriction in the Camel infrastructure. Hope that makes it clearer. Best regards, Harald