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

RabbitMQ主题交换:1次交换vs多次交换

太叔超英
2023-03-14

我有一个场景,我需要执行一系列流程,每个步骤都在独立的应用程序中完成和扩展。我正在为所有交换使用主题交换。当前拓扑如下所示:

P-

我们正在“版本化”队列,以处理可能影响消息结构的需求更改。绑定可能如下所示:

步骤1。exchange绑定到步骤1。v1。使用绑定键step1排队。v1

步骤1。exchange绑定到步骤1。v2。使用绑定键step1排队。v2级

还有其他与版本无关的绑定模式也使局部交换成为合适的选择。然而,我们可以只使用一个交换来完成同样的事情。

TLDR:当您的用例可以以任何一种方式工作时,使用多个主题交换而不是一个主题交换是否有好处?

共有2个答案

牛嘉谊
2023-03-14

看看“使用RabbitMQ实现性能和可扩展性的路由拓扑”http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

殷建弼
2023-03-14

我只是为您复制一些关键片段
https://spring.io/blog/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

>

如果可能有无限多个路由键,请考虑主题交换

对于主题路由,性能会随着绑定数量的增加而降低

扇出交换非常快,因为如果绑定到大量发生变化的队列,它们还没有要处理的路由

如果您不需要通配符,直接交流是一种更快的主题交流形式

与具有更多绑定、更少交换和队列的拓扑相比,对100000个队列中的问题进行故障排除可能会很繁琐

大量的交换和队列占用了更多的内存,这可能很重要,但这取决于

自2011年3月23日发布的RabbitMQ 2.4.0起,一种新的主题路由算法优化可用,峰值速度比以前的主题算法快60倍。因此,一个建议是减少交换和队列,增加路由,因为现在时间增长最小

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

  • 我正在寻求一些关于如何最好地配置我的rabbitMQ交换的建议。 我试着用循环系统的方法来交换话题。每个使用者都有自己的(唯一的)命名队列连接到主题交换。我希望交换为“相同”主题循环消息到每个使用者队列-比如。 我尝试了多个组合,但似乎只能同时将消息传递到使用者队列,这实际上意味着我要处理两次消息,每个使用者一次。 为了清楚起见,我还有一个扇出交换,我用它来“控制”消费者(启动、停止等)。这应该在

  • 我有点迷茫,正在尝试实施话题交流,不确定需要什么。 我想有几个路由键和一个主题交换(默认的amq.topic)。我的钥匙是: 创建customer.app 创建customer.app 客户。*.创建 我希望我的队列是持久的,但是我需要1个“客户”队列还是2个appA和appB队列?我已经弄清楚了我的发布者;连接、交换声明、基本发布。 但我正在与消费者斗争。假设我想打开3个控制台,上面提到的每个路

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

  • 我们正在重建消息队列系统。在讨论RabbitMQ交换类型时,我注意到有两种可能的解决方案可以实现路由消息的多播特性。 > < li> 话题交流。通过设置主题交换和特定模式的路由关键字,消息将被路由到指定的队列。即产品。*.根据AMQP规范,这通常是实现发布/订阅模式的交换类型。 报头交换。所谓的“类固醇直接交换”。对于多播消息,它甚至更灵活,因为忽略了路由键,而是每个消息都有“x-match”头,

  • 我成功地建立了一个话题交换,并且能够同时向几个消费者传递消息。 我还想向竞争对手传递信息,并继续使用主题交换。我了解到,使用相同的队列名称可以让消费者竞争消息。然而,我可能弄错了,因为我无法使它工作。 为同一主题的多个侦听器设置: < li >申报话题交流 < li >对于每个侦听器,用自动生成的名称声明一个新队列 < li >用给定的主题路由关键字将此队列绑定到上面的交换 如何将相互竞争的消费者