From cf94a109b443f8e7552b41bc0e55f590a4fb3d3f Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 17 Jun 2014 13:03:33 -0400 Subject: [PATCH] INT-3429 AMQP Publisher Confirm Config Improvement JIRA: https://jira.spring.io/browse/INT-3429 Require a `confirm-correlation-expression` when a `confirm-ack-channel` or `confirm-nack-channel` is specified. --- .../integration/amqp/outbound/AmqpOutboundEndpoint.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java index ace6a68442..5e8710d857 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java @@ -32,6 +32,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.integration.amqp.AmqpHeaders; import org.springframework.integration.amqp.support.AmqpHeaderMapper; import org.springframework.integration.amqp.support.DefaultAmqpHeaderMapper; +import org.springframework.integration.channel.NullChannel; import org.springframework.integration.handler.AbstractReplyProducingMessageHandler; import org.springframework.integration.handler.ExpressionEvaluatingMessageProcessor; import org.springframework.integration.support.AbstractIntegrationMessageBuilder; @@ -174,6 +175,12 @@ public class AmqpOutboundEndpoint extends AbstractReplyProducingMessageHandler this.correlationDataGenerator.setBeanFactory(beanFactory); } } + else { + Assert.state(this.confirmAckChannel == null || this.confirmAckChannel instanceof NullChannel, + "A 'confirmCorrelationExpression' is required when specifying a 'confirmAckChannel'"); + Assert.state(this.confirmNackChannel == null || this.confirmNackChannel instanceof NullChannel, + "A 'confirmCorrelationExpression' is required when specifying a 'confirmNackChannel'"); + } if (this.returnChannel != null) { Assert.isInstanceOf(RabbitTemplate.class, this.amqpTemplate, "RabbitTemplate implementation is required for publisher confirms");