我们正在重建消息队列系统。在浏览RabbitMQ交换类型时,我注意到有两种潜在的解决方案可以实现路由消息的多播特性。
1.主题交换通过设置主题交换和特定模式的路由键,消息将被路由到指定的队列。即产品。根据AMQP规范,这通常是实现Pub/Sub模式的交换类型。
1.标题交换。所谓的“类固醇直接交换”。多播消息甚至更灵活,因为路由键被忽略,而是每个消息都有“x-match”报头来表示消息应该被传递到哪个队列。并且每个消息可以以不同的方式动态路由。但是,这种交换类型似乎与消息队列设计的耦合更紧密一些,因为消费者/生产者必须了解更多关于目标队列的信息。
所以问题是,有没有人经历过这两种交换类型,并分享以上两种类型的优点/缺点的更多特征?谢谢!
参考文献[1]:https://www.rabbitmq.com/tutorials/amqp-concepts.html
3条答案
按热度按时间rmbxnbpk1#
我曾经使用过header和topic交换,根据我的经验,header交换更灵活,但在通过代码发送消息时,我们通常会这样做,因为正则表达式类型的语法,使用topic交换很容易。
你可以在这里阅读更多关于这一点:
http://codedestine.com/rabbitmq-headers-exchange/
http://codedestine.com/rabbitmq-topic-exchange/
fykwrbwg2#
两个交换机实现不同的路由算法。
Topic Exchange
:Headers Exchange
:sy5wg1nm3#
如果您的路由决策基于单个值,例如
routing_key
,那么主题交换就能满足,性能更好。如果您的路由决策需要多个值,那么Headers Exchange将允许您这样做。它还可以匹配这些值的
ANY
或ALL
。