如何配置 RabbitMq 以便多个应用程序可以管理自己的队列和绑定到共享交换
How to configure RabbitMq so that multiple apps can manage their own queues and bindings to a shared exchange
我们有一个发布到单一交易所的应用程序(使用 amqp)。此外,我们有许多应用程序有兴趣使用来自此交换的消息。为此,他们创建队列和从队列到交换的绑定。
我们希望确保每个应用的队列和绑定只能由该应用和该应用连接的用户管理。我设想使用虚拟主机,以便交换位于一个 /common
虚拟主机中,每个应用程序的用户都可以读取该虚拟主机,并且每个应用程序的队列和绑定都位于他们自己的 /<app>
虚拟主机中,用户可以完全访问该虚拟主机到。
然而,文档建议用户不能在一个通道内同时访问多个虚拟主机,并且 API 不提供将虚拟主机指定为 bindQueue() 的一部分的选项。
有办法实现吗?
队列由rabbitmq管理。消费者无法管理它们。消费者可能 create/declare 队列中有这组或那组参数。其中一个参数是“exclusive”,表示只有当前连接可以访问队列。
虚拟主机是在连接时指定的,而不是如您所说的在绑定时指定的,因此您需要在单独的线程中执行此操作。或者 re-organize 你的虚拟主机。
也许您不需要其中的任何一个,拥有路由键并声明队列独占而不是“/app”vhost 并且有一个扇出交换而不是“/common”vhost 就足够了。
您在连接字符串中指定了虚拟主机 (vhost)。 Vhosts 使得在一个代理上分离应用程序成为可能。您可以将用户、交换器、队列等隔离到一个特定的虚拟主机。您可以分离环境,例如生产到一个虚拟主机并登台到同一代理中的另一个虚拟主机,而不是设置多个代理。
https://devcenter.heroku.com/articles/cloudamqp#separate-applications
我认为要实现您的要求,您需要使用联合。
我有同样的域问题。
一个交换器,然后是不同的应用程序从不同的队列中消费。
如果我是对的,步骤是:
Exchange A => federation To Exchange 1/2/3/4/...这些交换彼此有不同的虚拟主机。
为不同的应用程序创建不同的虚拟主机和用户。
将对这些虚拟主机的访问权授予不同的交易所 (Exchange 1/2/3/4/)
创建不同的队列以从不同的 Exchange 1/2/3/4/
进行绑定
看清楚了吗?
我们有一个发布到单一交易所的应用程序(使用 amqp)。此外,我们有许多应用程序有兴趣使用来自此交换的消息。为此,他们创建队列和从队列到交换的绑定。
我们希望确保每个应用的队列和绑定只能由该应用和该应用连接的用户管理。我设想使用虚拟主机,以便交换位于一个 /common
虚拟主机中,每个应用程序的用户都可以读取该虚拟主机,并且每个应用程序的队列和绑定都位于他们自己的 /<app>
虚拟主机中,用户可以完全访问该虚拟主机到。
然而,文档建议用户不能在一个通道内同时访问多个虚拟主机,并且 API 不提供将虚拟主机指定为 bindQueue() 的一部分的选项。
有办法实现吗?
队列由rabbitmq管理。消费者无法管理它们。消费者可能 create/declare 队列中有这组或那组参数。其中一个参数是“exclusive”,表示只有当前连接可以访问队列。
虚拟主机是在连接时指定的,而不是如您所说的在绑定时指定的,因此您需要在单独的线程中执行此操作。或者 re-organize 你的虚拟主机。
也许您不需要其中的任何一个,拥有路由键并声明队列独占而不是“/app”vhost 并且有一个扇出交换而不是“/common”vhost 就足够了。
您在连接字符串中指定了虚拟主机 (vhost)。 Vhosts 使得在一个代理上分离应用程序成为可能。您可以将用户、交换器、队列等隔离到一个特定的虚拟主机。您可以分离环境,例如生产到一个虚拟主机并登台到同一代理中的另一个虚拟主机,而不是设置多个代理。
https://devcenter.heroku.com/articles/cloudamqp#separate-applications
我认为要实现您的要求,您需要使用联合。 我有同样的域问题。 一个交换器,然后是不同的应用程序从不同的队列中消费。 如果我是对的,步骤是:
Exchange A => federation To Exchange 1/2/3/4/...这些交换彼此有不同的虚拟主机。
为不同的应用程序创建不同的虚拟主机和用户。 将对这些虚拟主机的访问权授予不同的交易所 (Exchange 1/2/3/4/)
创建不同的队列以从不同的 Exchange 1/2/3/4/
进行绑定看清楚了吗?