AMQP-187 added convertSendAndReceive methods that accept a MessagePostProcessor callback

This commit is contained in:
Mark Fisher
2011-08-09 11:06:36 -04:00
parent d58b2f02b3
commit cb65bba2c4
2 changed files with 25 additions and 2 deletions

View File

@@ -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;
}

View File

@@ -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;