当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ交换类型比较:主题与标题

何嘉运
2023-03-14

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

> < li>

话题交流。通过设置主题交换和特定模式的路由关键字,消息将被路由到指定的队列。即产品。*.根据AMQP规范,这通常是实现发布/订阅模式的交换类型。

报头交换。所谓的“类固醇直接交换”。对于多播消息,它甚至更灵活,因为忽略了路由键,而是每个消息都有“x-match”头,表示消息应该传递到哪个队列。并且每个消息可以动态地进行不同的路由。然而,这种交换类型似乎与消息队列设计更紧密地耦合,因为消费者/生产者必须更多地了解目标队列。

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

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

共有2个答案

赫连冠玉
2023-03-14

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

< code >话题交流:

    < li >它将允许我们根据路由关键字中的通配符匹配有选择地路由邮件。 < li >有效绩效

头交换

  • 它允许您匹配AMQP消息中的标头而不是路由密钥。
  • 它的操作与直接交换相同,但性能要差得多。因此,它没有提供太多现实世界的好处。
吕鸿文
2023-03-14

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

您可以在此处了解更多信息:

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

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

 类似资料:
  • 我有点迷茫,正在尝试实施话题交流,不确定需要什么。 我想有几个路由键和一个主题交换(默认的amq.topic)。我的钥匙是: 创建customer.app 创建customer.app 客户。*.创建 我希望我的队列是持久的,但是我需要1个“客户”队列还是2个appA和appB队列?我已经弄清楚了我的发布者;连接、交换声明、基本发布。 但我正在与消费者斗争。假设我想打开3个控制台,上面提到的每个路

  • 我正在寻求一些关于如何最好地配置我的rabbitMQ交换的建议。 我试着用循环系统的方法来交换话题。每个使用者都有自己的(唯一的)命名队列连接到主题交换。我希望交换为“相同”主题循环消息到每个使用者队列-比如。 我尝试了多个组合,但似乎只能同时将消息传递到使用者队列,这实际上意味着我要处理两次消息,每个使用者一次。 为了清楚起见,我还有一个扇出交换,我用它来“控制”消费者(启动、停止等)。这应该在

  • 我有一个场景,我需要执行一系列流程,每个步骤都在独立的应用程序中完成和扩展。我正在为所有交换使用主题交换。当前拓扑如下所示: P- 我们正在“版本化”队列,以处理可能影响消息结构的需求更改。绑定可能如下所示: 步骤1。exchange绑定到步骤1。v1。使用绑定键step1排队。v1 步骤1。exchange绑定到步骤1。v2。使用绑定键step1排队。v2级 还有其他与版本无关的绑定模式也使局部

  • 本文向大家介绍比较RabbitMQ与Apache Kafka相关面试题,主要包含被问及比较RabbitMQ与Apache Kafka时的应答技巧和注意事项,需要的朋友参考一下 答:Apache Kafka的另一个选择是RabbitMQ。那么,让我们比较两者: 功能 Apache Kafka– Kafka是分布式的、持久的和高度可用的,这里共享和复制数据 RabbitMQ中没有此类功能 性能速度 A

  • 我成功地建立了一个话题交换,并且能够同时向几个消费者传递消息。 我还想向竞争对手传递信息,并继续使用主题交换。我了解到,使用相同的队列名称可以让消费者竞争消息。然而,我可能弄错了,因为我无法使它工作。 为同一主题的多个侦听器设置: < li >申报话题交流 < li >对于每个侦听器,用自动生成的名称声明一个新队列 < li >用给定的主题路由关键字将此队列绑定到上面的交换 如何将相互竞争的消费者

  • 在我的应用程序中,我有3个类:< br> - Company,它为3项工作中的任何一项雇用工人< br> - Workers,每个人可以做2项工作< br> - Administrator,它接收程序中所有消息的副本,并可以向所有公司、所有工人或每个人发送消息 我使用< code > work . companies . company name 作为公司密钥,使用< code > work .