Spring boot无法创建多个兔子连接工厂

Spring boot无法创建多个兔子连接工厂,spring,spring-boot,spring-amqp,Spring,Spring Boot,Spring Amqp,我正试图通过xml使用spring引导应用程序连接到两个不同的rabbitmq集群并从中消费。当在应用程序上下文中创建单个rabbit:connection工厂bean时,它工作得很好。但是,当添加第二个时,它无法启动应用程序,错误是org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration中方法rabbitListenerContainerFactory的参数1“”,但找到了2:“。如何为每个集

我正试图通过xml使用spring引导应用程序连接到两个不同的rabbitmq集群并从中消费。当在应用程序上下文中创建单个rabbit:connection工厂bean时,它工作得很好。但是,当添加第二个时,它无法启动应用程序,错误是org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration中方法rabbitListenerContainerFactory的参数1“”,但找到了2:“。如何为每个集群创建不同的工厂?如果这不是正确的方法,请建议另一种方法

以下是xml片段:

<rabbit:connection-factory id="firstConnectionFactory" connection-factory="firstSpringConnectionFactory"  />
<rabbit:connection-factory id="secondConnectionFactory" connection-factory="secondSpringConnectionFactory"/>
<bean id="firstSpringConnectionFactory"
class="org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBean">
    <property name="useSSL" value="${rabbitmq.ssl.enabled}" />
    <property name="host" value="${rabbitmq.first.host}"/>
    <property name="virtualHost" value="${rabbitmq.vhost}"/>
    <property name="port" value="${rabbitmq.cluster.port}"/>
    <property name="username" value="${rabbitmq.user}"/>
    <property name="password" value="${rabbitmq.first.password}"/>
</bean>

<bean id="secondSpringConnectionFactory"
class="org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBean">
    <property name="useSSL" value="${rabbitmq.ssl.enabled}" />
    <property name="host" value="${rabbitmq.second.host}"/>
    <property name="virtualHost" value="${rabbitmq.vhost}"/>
    <property name="port" value="${rabbitmq.cluster.port}"/>
    <property name="username" value="${rabbitmq.user}"/>
    <property name="password" value="${rabbitmq.second.password}"/>
</bean>

由于您在这里不依赖Spring引导,也不使用Spring AMQP注释支持,因此我建议您从自动配置中进行
RabbitAnnotationDrivenConfiguration

@EnableAutoConfiguration(exclude={RabbitAnnotationDrivenConfiguration.class})

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration

如果您仍然需要在项目的其他地方使用
@RabbitListener
,那么您只能选择构建所有
@enablebrabbit
基础结构

谢谢@Artem,通过排除类RabbitAutoConfiguration@EnableAutoConfiguration(exclude={org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration.class}),我能够克服这个错误。太棒了!现在考虑一下这一点:当然,我将运行一些测试,看看是否因为这个改变而没有中断,并接受你的答案:“我如何正确地使用RabutoNoNoDeNoDeNoDevices配置?你不应该使用它:<代码> @ EnabRababBIT <代码>为你做这些事情。
@EnableAutoConfiguration(exclude={RabbitAnnotationDrivenConfiguration.class})

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration