是否可以在没有RabbitAutoConfiguration.class的情况下自动创建队列? AMQP

时间:2019-05-17 16:25:52

标签: spring-boot amqp spring-amqp

我正在使用带有AMQP的2.1.0.RELEASE版本的Spring Boot。不幸的是,我需要连接到几个不同的RabbitMQ服务器。由于以上版本的spring更改,我不得不排除RabbitAutoConfiguration.class,因为如果没有一个ConnectionFactory bean作为主要对象就无法启动,但是即使我将其中之一设置为@Primary,显然也不是。不起作用,因为amqp / spring-boot怎么知道在哪个服务器上创建哪个队列...

那么,是否可以在禁用自动配置的情况下在不同服务器上自动创建队列?

1 个答案:

答案 0 :(得分:2)

是的,每个连接工厂都需要一个RabbitAdmin

默认情况下,所有组件都将在所有代理上声明,但是您可以添加条件。参见Conditional Declaration

  

默认情况下,所有队列,交换和绑定均由应用程序上下文中的所有RabbitAdmin实例(假设它们具有auto-startup="true")声明。

@Bean
public Queue queue1() {
    Queue queue = new Queue("foo");
    queue.setAdminsThatShouldDeclare(admin1());
    return queue;
}