RabbitMQ主题交换:1个交换对多个交换

时间:2012-06-28 16:00:59

标签: rabbitmq amqp

我有一个场景,我需要执行一系列过程,每个步骤都在独立的应用程序中完成并缩放。我正在为所有交易所使用主题交换。当前的拓扑结构如下:

P - > X - >问 - > C / P - > X - >问 - > ç

我们正在“版本化”我们的队列以处理影响消息结构的可能的需求更改。绑定可能看起来像这样:

step1.exchange绑定到带有绑定键step1.v1

的step1.v1.queue

step1.exchange绑定到step1.v2.queue,带有绑定键step1.v2

还有其他与版本无关的绑定模式也使得主题交换成为合适的选择。但是,我们只能使用一个交换来完成同样的事情。

TLDR:当您的用例以任何一种方式运作时,使用多个主题交换而非一个主题交换是否有益?

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

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

  
      
  • 如果您在应用程序图中有一个有限的路由键域,那么许多扇出交换可能是合适的(每个路由密钥的交换1:1映射)

  •   
  • 如果您有可能无限数量的路由密钥,请考虑主题交换

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

  •   
  • 扇出交换速度非常快,因为如果绑定到大量更改的队列,它们还没有要处理的路由

  •   
  • 如果您不需要外卡,直接交换是一种更快速的主题交换形式

  •   
  • 对于具有更多绑定,更少交换和队列的拓扑,对100,000多个队列中的问题进行故障排除可能比较繁琐

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

  •   
     

自2011年3月23日发布的RabbitMQ 2.4.0开始,我们提供了一个新的主题路由算法优化,其峰值速度比前一主题算法快60倍。因此,一个建议是减少交换和队列,以及更多路由,因为时间增加现在是最小的

相关问题