我正在使用带有AMQP的2.1.0.RELEASE版本的Spring Boot。不幸的是,我需要连接到几个不同的RabbitMQ服务器。由于以上版本的spring更改,我不得不排除RabbitAutoConfiguration.class
,因为如果没有一个ConnectionFactory bean作为主要对象就无法启动,但是即使我将其中之一设置为@Primary
,显然也不是。不起作用,因为amqp / spring-boot怎么知道在哪个服务器上创建哪个队列...
那么,是否可以在禁用自动配置的情况下在不同服务器上自动创建队列?
答案 0 :(得分:2)
是的,每个连接工厂都需要一个RabbitAdmin
。
默认情况下,所有组件都将在所有代理上声明,但是您可以添加条件。参见Conditional Declaration。
默认情况下,所有队列,交换和绑定均由应用程序上下文中的所有
RabbitAdmin
实例(假设它们具有auto-startup="true"
)声明。
@Bean
public Queue queue1() {
Queue queue = new Queue("foo");
queue.setAdminsThatShouldDeclare(admin1());
return queue;
}