From df5f2692b48ea23c950b98fe338ebf060d0b2618 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 24 Oct 2017 14:59:24 -0400 Subject: [PATCH] GH-107: Disallow HeaderMode.embeddedHeaders It is invalid to configure a RabbitMQ binding to use embedded headers since RabbitMQ supports headers natively. Resolves: spring-cloud/spring-cloud-stream-binder-rabbit#107 --- .../stream/binder/rabbit/RabbitMessageChannelBinder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java b/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java index 6fab833c2..b2cf5e642 100644 --- a/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java +++ b/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java @@ -51,6 +51,7 @@ import org.springframework.cloud.stream.binder.BinderHeaders; import org.springframework.cloud.stream.binder.ExtendedConsumerProperties; import org.springframework.cloud.stream.binder.ExtendedProducerProperties; import org.springframework.cloud.stream.binder.ExtendedPropertiesBinder; +import org.springframework.cloud.stream.binder.HeaderMode; import org.springframework.cloud.stream.binder.rabbit.properties.RabbitCommonProperties; import org.springframework.cloud.stream.binder.rabbit.properties.RabbitConsumerProperties; import org.springframework.cloud.stream.binder.rabbit.properties.RabbitExtendedBindingProperties; @@ -293,6 +294,8 @@ public class RabbitMessageChannelBinder protected MessageHandler createProducerMessageHandler(final ProducerDestination producerDestination, ExtendedProducerProperties producerProperties, MessageChannel errorChannel) throws Exception { + Assert.state(!producerProperties.getHeaderMode().equals(HeaderMode.embeddedHeaders), + "the RabbitMQ binder does not support embedded headers since RabbitMQ supports headers natively"); String prefix = producerProperties.getExtension().getPrefix(); String exchangeName = producerDestination.getName(); String destination = StringUtils.isEmpty(prefix) ? exchangeName : exchangeName.substring(prefix.length()); @@ -370,6 +373,8 @@ public class RabbitMessageChannelBinder @Override protected MessageProducer createConsumerEndpoint(ConsumerDestination consumerDestination, String group, ExtendedConsumerProperties properties) { + Assert.state(!properties.getHeaderMode().equals(HeaderMode.embeddedHeaders), + "the RabbitMQ binder does not support embedded headers since RabbitMQ supports headers natively"); String destination = consumerDestination.getName(); SimpleMessageListenerContainer listenerContainer = new SimpleMessageListenerContainer( this.connectionFactory);