首页 > 解决方案 > RabbitAdmin 中的默认队列绑定

问题描述

今天,我们的应用程序有一个 vhost、一个 ConnectionFactory 和一个 RabbitAdmin,然后是多个队列和交换声明。现在我们需要一个新的虚拟主机,因此需要一个 ConnectionFactory 和 RabbitAdmin

创建新的虚拟主机后,我面临的问题是,所有现有队列和交换都在两个虚拟主机中创建。为了解决这个问题,我使用declare-by="RabbitAdminName"了可以在队列和交换级别使用的属性。由于我的应用程序有多个队列和交换,因此我不希望通过在每个队列定义中添加 declare-by 来干扰所有现有配置。

有没有办法(全局配置更改默认行为)告诉兔子只有预期的新队列将进入新的 vhost/ConnectoinFactory/RabbitAdmin 而不是已经存在的队列。任何帮助都是非常可观的(我正在寻找减速的xml方式)

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

参考:spring.io

标签: rabbitmqspring-amqp

解决方案


目前没有针对此的全局设置;您必须配置每个队列等并设置declare-by属性以将声明限制为显式管理员。

因此,您需要对旧队列执行此操作,以便仅在旧 vhost 上声明这些队列。

我们可以向管理员添加一个标志,以排除任何未明确请求此管理员声明的 bean。

打开一个新功能问题


推荐阅读