diff --git a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java index 63f5b8d21..e964b5229 100644 --- a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java +++ b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java @@ -33,6 +33,7 @@ import org.springframework.amqp.core.FanoutExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.DeclarationExceptionEvent; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.DefaultListableBeanFactory; @@ -45,6 +46,7 @@ import org.springframework.cloud.stream.provisioning.ConsumerDestination; import org.springframework.cloud.stream.provisioning.ProducerDestination; import org.springframework.cloud.stream.provisioning.ProvisioningException; import org.springframework.cloud.stream.provisioning.ProvisioningProvider; +import org.springframework.context.ApplicationListener; import org.springframework.context.support.GenericApplicationContext; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -55,8 +57,9 @@ import org.springframework.util.StringUtils; * @author Soby Chacko * @author Gary Russell */ -public class RabbitExchangeQueueProvisioner implements ProvisioningProvider, - ExtendedProducerProperties> { +public class RabbitExchangeQueueProvisioner implements ApplicationListener, + ProvisioningProvider, + ExtendedProducerProperties> { private static final AnonymousQueue.Base64UrlNamingStrategy ANONYMOUS_GROUP_NAME_GENERATOR = new AnonymousQueue.Base64UrlNamingStrategy("anonymous."); @@ -71,13 +74,14 @@ public class RabbitExchangeQueueProvisioner implements ProvisioningProvider binding = null; + try { + binding = binder.bindConsumer("input", "baddecls", new DirectChannel(), createConsumerProperties()); + fail("Expected exception"); + } + catch (BinderException e) { + assertThat(e.getCause()).isInstanceOf(AmqpIOException.class); + } + finally { + admin.deleteQueue("testBadUserDeclarationsFatal"); + if (binding != null) { + binding.unbind(); + } + } + } + private SimpleMessageListenerContainer verifyContainer(Lifecycle endpoint) { SimpleMessageListenerContainer container; RetryTemplate retry;