以编程方式禁用RabbitAutoConfiguration

时间:2015-06-15 12:54:07

标签: spring spring-boot

是否存在在spring boot(1.2.2)中禁用RabbitAutoConfiguration的程序化(基于属性)方法。

看起来像spring.rabbitmq.dynamic = false只禁用AmqpAdmin而不禁用连接工厂等。

我们想要一个模型,其中app属性可能来自spring cloud配置(包括控制总线)或来自-D jvm args。此决定是在部署时做出的。 当属性来自-D jvm args时,我们禁用spring cloud配置客户端,但是Rabbit不断抛出异常,例如:

[org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer] - [Co nsumer引发异常,如果连接工厂支持,处理可以重启 它。异常摘要:org.springframework.amqp.AmqpConnectException:java.ne t.ConnectException:拒绝连接:连接]

1 个答案:

答案 0 :(得分:3)

First you need to exclude RabbitAutonfiguration from your app

@EnableAutoConfiguration(exclude=RabbitAutoConfiguration.class)

Then you can import it based on some property like this

@Configuration
@ConditionalOnProperty(name="myproperty",havingValue="valuetocheck",matchIfMissing=false)
@Import(RabbitAutoConfiguration.class)
class RabbitOnConditionalConfiguration{

}