RabbitMQ联合到同一服务器上的虚拟主机

oiopk7p5  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(2)|浏览(180)

我有一个RabbitMQ服务器,它接收到一个名为“ce_func”的虚拟主机内的交换消息,这个交换绑定到一个名为“azure_trigger”的队列。
我想使用Azure Functions的新RabbitMQ绑定从Rabbit收集。很遗憾,这仅限于从虚拟主机“/”收集。我希望可以使用Rabbit的联合身份验证功能自动路由到同一服务器的“/”虚拟主机内的“azure_trigger”队列,但到目前为止我失败了。
我创建了一个Rabbit“上游”并将“策略”应用于该上游,但我无法确定配置。我的联合状态为“正在运行”,但它仅检查“ce_func”虚拟主机,我无法看到在何处可以将目标交换设置为“/”虚拟主机。
有人能指点一下吗?

r6hnlfcb

r6hnlfcb1#

如果我没理解错的话,您希望在不同vhost中的队列之间传递消息。
RabbitMQ社区建议使用Shovel plugin来处理这种情况:
源和目标可以位于同一代理上(通常位于不同的vhost中),也可以位于不同代理上。

qnakjoqk

qnakjoqk2#

可以在federation-upstream配置的uri字段中引用中的任何虚拟主机(vhost),格式为:

"amqp://" [ username [ ":" password ] "@" ] host [ ":" port ] [ "/" vhost ]

简单来说,你可以在uri的末尾加上vhost,例如amqp://localhost:5672/myvhost...如果你的vhost名称是空的,那么只要确保你包括尾部斜杠“/”,例如amqp://localhost:5672/
特定于rabbitmq文档中的空白vhost的注解(https://www.rabbitmq.com/uri-spec.html
vhost组件可能不存在;这通过amqp_authority后面缺少“/”字符来表示。缺少vhost组件不等同于空(即零长度)vhost名称。

相关问题