diff --git a/spring-amqp-core/src/main/java/org/springframework/amqp/core/AmqpTemplate.java b/spring-amqp-core/src/main/java/org/springframework/amqp/core/AmqpTemplate.java index 20924f28..04cc7c97 100644 --- a/spring-amqp-core/src/main/java/org/springframework/amqp/core/AmqpTemplate.java +++ b/spring-amqp-core/src/main/java/org/springframework/amqp/core/AmqpTemplate.java @@ -82,4 +82,10 @@ public interface AmqpTemplate { Object convertSendAndReceive(String exchange, String routingKey, Object message) throws AmqpException; + Object convertSendAndReceive(Object message, MessagePostProcessor messagePostProcessor) throws AmqpException; + + Object convertSendAndReceive(String routingKey, Object message, MessagePostProcessor messagePostProcessor) throws AmqpException; + + Object convertSendAndReceive(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor) throws AmqpException; + } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java index 2b82ac1d..109a846f 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java @@ -249,17 +249,34 @@ public class RabbitTemplate extends RabbitAccessor implements RabbitOperations { } public Object convertSendAndReceive(final Object message) throws AmqpException { - return this.convertSendAndReceive(this.exchange, this.routingKey, message); + return this.convertSendAndReceive(this.exchange, this.routingKey, message, null); } public Object convertSendAndReceive(final String routingKey, final Object message) throws AmqpException { - return this.convertSendAndReceive(this.exchange, routingKey, message); + return this.convertSendAndReceive(this.exchange, routingKey, message, null); } public Object convertSendAndReceive(final String exchange, final String routingKey, final Object message) throws AmqpException { + return this.convertSendAndReceive(exchange, routingKey, message, null); + } + + public Object convertSendAndReceive(final Object message, final MessagePostProcessor messagePostProcessor) throws AmqpException { + return this.convertSendAndReceive(this.exchange, this.routingKey, message, messagePostProcessor); + } + + public Object convertSendAndReceive(final String routingKey, final Object message, final MessagePostProcessor messagePostProcessor) + throws AmqpException { + return this.convertSendAndReceive(this.exchange, routingKey, message, messagePostProcessor); + } + + public Object convertSendAndReceive(final String exchange, final String routingKey, final Object message, + final MessagePostProcessor messagePostProcessor) throws AmqpException { MessageProperties messageProperties = new MessageProperties(); Message requestMessage = getRequiredMessageConverter().toMessage(message, messageProperties); + if (messagePostProcessor != null) { + requestMessage = messagePostProcessor.postProcessMessage(requestMessage); + } Message replyMessage = this.doSendAndReceive(exchange, routingKey, requestMessage); if (replyMessage == null) { return null;