// behavior as the original thread is not blocking while we wait for the reply
getProducerExecutorService().submit(new Callable<Exchange>() {
public Exchange call() throws Exception {
// convert the async producer which just blocks until the task is complete
try {
AsyncProcessor asyncProducer = exchange.getContext().getTypeConverter().convertTo(AsyncProcessor.class, producer);
asyncProducer.process(exchange, callback);
} catch (Exception e) {
if (LOG.isDebugEnabled()) {
LOG.debug("Caught exception while processing: " + exchange, e);
}
// set the exception on the exchange so Camel error handling can deal with it