AMQP | RabbitMQ |如果可以通过由具有相同路由密钥的多个队列绑定的直接交换来实现扇出交换,为什么它们有扇出交换?

AMQP | RabbitMQ |如果可以通过由具有相同路由密钥的多个队列绑定的直接交换来实现扇出交换,为什么它们有扇出交换?,rabbitmq,messaging,amqp,Rabbitmq,Messaging,Amqp,AMQP/RabbitMQ的新手。试图掌握概念/原则,并偶然发现了这一点 以下两种范式之间的区别是什么 扇出交换: FanoutExchange-->队列1(路由键1)、队列2(路由键1) vs 直接交换: DirectExchange-->队列1(路由键1)、队列2(路由键1) 这两种方法不是都能达到同样的效果吗? 如果没有,请有人解释一下它有什么不同,在哪些情况下它比其他的更受欢迎 当这两种交换都可以通过调整绑定中的路由键来实现时,为什么它们有这两种类型的交换呢 谢谢。据我所知,您展示的两个

AMQP/RabbitMQ的新手。试图掌握概念/原则,并偶然发现了这一点

以下两种范式之间的区别是什么

扇出交换: FanoutExchange-->队列1(路由键1)、队列2(路由键1)

vs

直接交换: DirectExchange-->队列1(路由键1)、队列2(路由键1)

这两种方法不是都能达到同样的效果吗? 如果没有,请有人解释一下它有什么不同,在哪些情况下它比其他的更受欢迎

当这两种交换都可以通过调整绑定中的路由键来实现时,为什么它们有这两种类型的交换呢


谢谢。

据我所知,您展示的两个范例可以达到相同的效果。但这两种交换背后的理念是完全不同的

  • 扇出交换。在使用扇出交换时,您所需要做的就是将队列绑定到某个扇出交换,尽管在声明绑定时使用了绑定密钥。因此,您可以看到扇出交换更关注将消息扇出到绑定到它的任何队列。 绑定密钥的含义取决于交换类型。我们以前使用的扇出交换,只是忽略了它的值

  • 直接交换。直接交换在绑定时有更多的限制。绑定密钥必须与附加到特定消息的路由密钥完全相同。因此,当使用不同的规则密钥发送不同的消息,并将这些消息分发到使用不同的“绑定密钥”绑定到它的不同队列时,直接交换更加灵活。 Msg1、Msg2(路由键\u 1)-->DirectExchange\u 1-->队列1, 队列2(bindingKey_1)

    【绑定键\u 1=路由键\u 1】

    Msg3(路由键_2)-->DirectExchange_1-->队列3(绑定键_2)

    【绑定键2=路由键2】


    • 据我所知,您展示的两种范例可以达到相同的效果。但这两种交换背后的理念是完全不同的

      • 扇出交换。在使用扇出交换时,您所需要做的就是将队列绑定到某个扇出交换,尽管在声明绑定时使用了绑定密钥。因此,您可以看到扇出交换更关注将消息扇出到绑定到它的任何队列。 绑定密钥的含义取决于交换类型。我们以前使用的扇出交换,只是忽略了它的值

      • 直接交换。直接交换在绑定时有更多的限制。绑定密钥必须与附加到特定消息的路由密钥完全相同。因此,当使用不同的规则密钥发送不同的消息,并将这些消息分发到使用不同的“绑定密钥”绑定到它的不同队列时,直接交换更加灵活。 Msg1、Msg2(路由键\u 1)-->DirectExchange\u 1-->队列1, 队列2(bindingKey_1)

        【绑定键\u 1=路由键\u 1】

        Msg3(路由键_2)-->DirectExchange_1-->队列3(绑定键_2)

        【绑定键2=路由键2】