gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:18:56 26 4
gpt4 key购买 nike

我正在尝试通过 xml 使用 Spring Boot 应用程序连接到两个不同的rabbitmq 集群并从中使用它们。当在应用程序上下文中创建单个 rabbit:connection-factory bean 时,它运行良好。但是,当添加第二个时,它无法启动应用程序并出现错误 “org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration 中rabbitListenerContainerFactory 方法的参数1 需要一个bean,但找到了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>

和监听器容器代码:
ConnectionFactory cf = rabbitConnectionFactory;//One of the connnection factories will be injected here from app context
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(cf);
container.setConcurrentConsumers(count);
container.addQueueNames(queueName);
container.setMessageListener(listener);
container.start();

最佳答案

由于您在这里不依赖 Spring Boot 并且不使用 Spring AMQP 注释支持,我建议您 exclude RabbitAnnotationDrivenConfiguration从自动配置:

@EnableAutoConfiguration(exclude={RabbitAnnotationDrivenConfiguration.class})

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

如果您还需要 @RabbitListener在您项目的其他地方,您只能选择构建所有 @EnableRabbit基础设施 manually .

关于Spring boot 无法创建多个兔子连接工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com