RabbitMQ Exchange类型比较:主题与标题

vsikbqxv  于 2023-05-29  发布在  RabbitMQ
关注(0)|答案(3)|浏览(221)

我们正在重建消息队列系统。在浏览RabbitMQ交换类型时,我注意到有两种潜在的解决方案可以实现路由消息的多播特性。
1.主题交换通过设置主题交换和特定模式的路由键,消息将被路由到指定的队列。即产品。根据AMQP规范,这通常是实现Pub/Sub模式的交换类型。
1.标题交换。所谓的“类固醇直接交换”。多播消息甚至更灵活,因为路由键被忽略,而是每个消息都有“x-match”报头来表示消息应该被传递到哪个队列。并且每个消息可以以不同的方式动态路由。但是,这种交换类型似乎与消息队列设计的耦合更紧密一些,因为消费者/生产者必须了解更多关于目标队列的信息。
所以问题是,有没有人经历过这两种交换类型,并分享以上两种类型的优点/缺点的更多特征?谢谢!
参考文献[1]:https://www.rabbitmq.com/tutorials/amqp-concepts.html

rmbxnbpk

rmbxnbpk1#

我曾经使用过header和topic交换,根据我的经验,header交换更灵活,但在通过代码发送消息时,我们通常会这样做,因为正则表达式类型的语法,使用topic交换很容易。
你可以在这里阅读更多关于这一点:
http://codedestine.com/rabbitmq-headers-exchange/
http://codedestine.com/rabbitmq-topic-exchange/

fykwrbwg

fykwrbwg2#

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

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

Headers Exchange

  • 它允许您匹配AMQP消息中的报头,而不是路由键。
  • 它的操作与直接交换相同,但性能要差得多。因此,它并没有提供太多的现实世界的好处。
sy5wg1nm

sy5wg1nm3#

如果您的路由决策基于单个值,例如routing_key,那么主题交换就能满足,性能更好。
如果您的路由决策需要多个值,那么Headers Exchange将允许您这样做。它还可以匹配这些值的ANYALL

相关问题