Moving to M2. We need to think about 2 things (at least):
1. method naming: I'm thinking of something like WebServiceTemplate with 'marshalSendAndReceive' as well as 'sendAndReceive' with request+reply callbacks.
2. handling both provided arg for replyTo Address and another method that would generate a temporary one on the fly. With RabbitMQ, we can generate a Queue on the Channel directly, but for other implementations that functionality might be available on the AmqpAdmin implementation only... but we probably don't want to depend on AmqpAdmin impls from AmqpTemplate impls.