rabbitmq中,使用一个exchange和使用多个exchange,性能会有差别吗?

最近学习rabbitmq,想到个问题:
一个exchange绑定1000个queue,和5个exchange,每个exchange绑定200个queue,这两种设计,在消息转发的效率上,会有差别吗?

阅读 9k
2 个回答

以下想法皆为从一个码农的角度去思考,对 RabbitMQ 没深入了解,仅作参考。

从算法时间复杂度上来说,如果按照顺序查找:

  • 1 个 exchange + 1000 个 queue,一次投递的平均查找次数是 1 + 500

  • 5 个 exchange + 200(5组) 个 queue,一次投递的平均查找次数是 2.5 + 100

如果按照 hash 查找的话,那几乎没什么区别了,而且相信 RabbitMQ 不会采用顺序查找。
exchange 我觉得是进行业务区分,命名空间管理的作用更大于上面考虑的效率,RabbitMQ 作为金融行业都使用的消息队列本身应该不存在这种效率上的问题。

一提到性能,就不能单单看一方面,列了几点:

  • 服务器的配置:cpu、内存等;
  • 网络环境,带宽;
  • 是否使用集群;
  • 消费端和生产端的处理消息能力和处理速度。

如果你现在只是玩玩,其实暂时还不需要考虑性能问题,先试着熟悉api做些demo出来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进