今天,我们的应用程序有一个 vhost、一个 ConnectionFactory 和一个 RabbitAdmin,然后是多个队列和交换声明。现在我们有一个要求,我需要一个新的虚拟主机,因此需要一个 ConnectionFactory 和 RabbitAdmin
创建新虚拟主机后,我面临的问题是,所有现有队列和交换都在两个虚拟主机中创建。为了解决这个问题,我使用了 declare-by="RabbitAdminName"
属性,我可以在队列和交换级别使用它。由于我的应用程序有多个队列和交换,因此我不希望通过在每个队列定义中添加 declare-by 来扰乱所有现有配置。
有没有办法(全局配置更改默认行为)告诉兔子只有预期的新队列才会转到新的 vhost/ConnectoinFactory/RabbitAdmin 而不是已经存在的队列。非常感谢任何帮助(我正在寻找减速的 xml 方式)
By default, all queues, exchanges, and bindings are declared by all RabbitAdmin instances (that have auto-startup="true") in the application context.
引用:spring.io
最佳答案
目前没有全局设置;您必须配置每个队列等并设置 declare-by
属性以将声明限制为显式管理员。
因此,您需要为旧队列执行此操作,以便仅在旧虚拟主机上声明这些队列。
我们可以向管理员添加一个标志,以排除任何未明确请求该管理员声明的 bean。
关于rabbitmq - RabbitAdmin 中的默认队列绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57608305/