【问题标题】:RabbitMQ Exchange Type comparison: Topic vs. HeaderRabbitMQ 交换类型比较:主题与标题
【发布时间】:2021-03-11 22:01:56
【问题描述】:

我们正在重建我们的消息队列系统。在查看 RabbitMQ 交换类型时,我注意到有两种潜在的解决方案可以实现路由消息的多播特性。

  1. 主题交换。通过设置主题交换和具有特定模式的路由键,消息将被路由到指定的队列。 IE。产品。*。根据 AMQP 规范,这通常是实现 Pub/Sub 模式的交换类型。

  2. 标头交换。所谓的“类固醇直接交换”。在忽略路由键的情况下多播消息更加灵活,而是每条消息都有“x-match”标头来表示应该将消息传递到哪个队列。并且每条消息都可以以不同的方式动态路由。但是,这种交换类型可能与消息队列设计结合得更紧密一些,因为消费者/生产者必须了解更多关于目标队列的信息。

所以问题是,有没有人体验过这两种交换类型并分享上述两种类型的优点/缺点的更多特征?谢谢!

参考[1]:https://www.rabbitmq.com/tutorials/amqp-concepts.html

【问题讨论】:

    标签: rabbitmq message-queue


    【解决方案1】:

    我曾使用过标头和主题交换,根据我的经验,标头交换更灵活,但是在通过代码发送消息时,我们通常会这样做,由于正则表达式类型的语法,很容易使用主题交换。

    您可以在此处阅读更多相关信息:

    http://codedestine.com/rabbitmq-headers-exchange/

    http://codedestine.com/rabbitmq-topic-exchange/

    【讨论】:

      【解决方案2】:

      两个交换机实现不同的路由算法。

      Topic Exchange:

      • 它将允许我们根据路由键中的通配符匹配选择性地路由消息。
      • 有效性能

      Headers Exchange:

      • 它允许您改为匹配 AMQP 消息中的标头 的路由键。
      • 它的操作方式与直接交换相同 但性能要差得多。结果,它并没有提供太多 现实世界的好处。

      【讨论】: