当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ中用于交换到交换绑定的正确路由密钥

壤驷文华
2023-03-14

我正在寻找一种在RabbitMQ中进行分层路由的方法。我试图在留档中找到答案,但突然失败了。

通常,RabbitMQ允许您通过某个路由密钥连接到直接交换机,但我不清楚如何在多个交换机之间进行路由。

例如,假设我们有“根”交换和“主机1”交换,路由键为“主机1”。我有一个通过路由键绑定到“主机1”交换的队列。我可以用routing_key发布消息到“根”交换吗,比如“主机1.31261”?显然,它不完全是这样工作的,但是有没有办法用不同的直接交换来制作一个复杂的路由?

共有1个答案

有耀
2023-03-14

是的,你可以这样做

您可以使用exchange为此交换绑定

可以包含此绑定的路由密钥

原始和目标的交换类型可以是您想要的任何类型。需要复杂路由的主题交换吗?然后将您的交换声明为主题。

您甚至可以从主机的主题交换转换为直接或扇出式交换作为目标。

关键是在绑定之前,按照需要声明的方式声明每个交换。

该文档中显示的示例包括java和。net代码。您需要与您用于特定语言的库进行核对。

不过,一般来说,队列的相同绑定适用于Exchange。您只需要调用等效的“绑定交换”方法,而不是“绑定队列”

如果您的库不支持它,您可以通过RabbitMQ管理网站手动添加绑定。

 类似资料:
  • 我在我的项目中使用RabbitMQ,我想知道是应该使用具有多个路由密钥的单个交换还是使用多个交换?哪个效率更高? 例如,如果我使用带有路由键A、B、C的单个exchange E,消费者连接到该exchange E,并使用A、B、C路由键获取数据。另一种选择是,我应该将其发送到exchange A、exchange B、exchange C,而不使用路由密钥,并且消费者可以连接到每个exchange

  • 我试图使用BasicGet仅检索与通道的Exchange/Queue/RoutingKey组合匹配的消息。 我们的路由密钥的一个例子是 我遇到的问题是,路由密钥被完全忽略,所有消息无论指定的路由密钥是什么,都可以通过BasicGet获得。 我使用的是直接交换。我认为直接就足够了,我不需要通配符的能力,您可以通过主题交换获得路由键。 直接交换和路由密钥解决方案是否应该与BasicGet配合使用? 谢

  • 我基本上是在RabbitMQ上工作。我正在编写一个python代码,其中我正在尝试查看在主题交换的情况下路由密钥是否与绑定模式匹配。我遇到了这个链接 - https://www.rabbitmq.com/tutorials/tutorial-five-java.html 它说 - “但是绑定键有两个重要的特殊情况: 那么如何将消息的路由键与队列的绑定模式相匹配呢?例如,消息的路由键是“my.rou

  • 我有一个场景,我需要执行一系列流程,每个步骤都在独立的应用程序中完成和扩展。我正在为所有交换使用主题交换。当前拓扑如下所示: P- 我们正在“版本化”队列,以处理可能影响消息结构的需求更改。绑定可能如下所示: 步骤1。exchange绑定到步骤1。v1。使用绑定键step1排队。v1 步骤1。exchange绑定到步骤1。v2。使用绑定键step1排队。v2级 还有其他与版本无关的绑定模式也使局部

  • 我一直在尝试使用RabbitMQ,但遇到了以下问题(与此非常类似:RabbitMQ中的主题交换与直接交换)。 我需要密集地广播大约800种类型的消息(因此每种消息类型都会有很多消费者),我想知道以下哪种方法更好: > 创建一个直接交换,在该交换中,消息将使用路由密钥(消息类型名称)发送,每个消费者都将通过绑定了相应路由密钥的临时队列连接到该交换。(因为没有像“key1.key2.*”这样复杂的路由

  • 我正在尝试编写一个应用程序,测试将N个交换绑定到内存、IO等相同队列的效果。 所有测试都使用“主题”交换类型。我遇到的问题是,当我使用多个exchange进行测试时,我没有收到我发布回的所有消息。但是,当我使用1 exchange时,我会收到所有消息。 你知道为什么会这样吗? 谢谢 编辑: 我有一个队列,它使用相同的绑定键绑定到两个“主题”交换: *。系统日志# #。系统错误 我将向每个excha