Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RabbitMQ交换类型比较:主题与标头_Rabbitmq_Message Queue - Fatal编程技术网

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

RabbitMQ交换类型比较:主题与标头,rabbitmq,message-queue,Rabbitmq,Message Queue,我们正在重建我们的消息队列系统。在讨论RabbitMQ交换类型时,我注意到有两种潜在的解决方案可以实现路由消息的多播性质 专题交流。通过设置主题交换和具有特定模式的路由密钥,消息将被路由到指定的队列。即产品。*。根据AMQP规范,这通常是实现发布/订阅模式的交换类型 标题交换。所谓的“类固醇直接交换”。多播消息更加灵活,因为忽略了路由键,而每个消息都有“x-match”头来表示消息应该传递到哪个队列。每个消息都可以动态地以不同的方式路由。然而,这种交换类型似乎与消息队列设计更紧密地结合在一起,因

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

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

  • 标题交换。所谓的“类固醇直接交换”。多播消息更加灵活,因为忽略了路由键,而每个消息都有“x-match”头来表示消息应该传递到哪个队列。每个消息都可以动态地以不同的方式路由。然而,这种交换类型似乎与消息队列设计更紧密地结合在一起,因为消费者/生产者必须更多地了解目标队列

  • 所以问题是,有没有人对这两种交换类型都有经验,并且对上述两种类型的优缺点有更多的共同点?谢谢


    参考文献[1]:

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

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


    两个exchange都实现了不同的路由算法

    主题交换

    • 它将允许我们根据路由密钥中的通配符匹配有选择地路由消息
    • 有效性能
    头交换

    • 它允许您与AMQP消息中的头进行匹配 路由密钥的名称
    • 它的操作与直接交换相同 但性能要差得多。因此,它没有提供太多 现实世界的利益

    rabbitmq邮件列表中有关于头交换的讨论,它为您决定是否使用头交换提供了更多信息。x-match头不会出现在消息上,而是出现在绑定上(应由您的消费者创建)。因此,在这方面,它并没有更紧密地结合在一起。我已经在这两个方面创建了一个很好的教程,请看一看并阅读