直接和扇出交换需要什么?

Ana*_*tel 3 amqp rabbitmq

根据我的理解,直接和扇出交换的所有功能或用例都可以使用主题交换来实现。主题交换支持功能超集。那么问题来了,为什么 RabbitMQ 有直接和扇出交换?是否有任何用例可以使用直接/扇出交换而不是主题交换来实现?

kha*_*son 6

我会说这是一个简化的问题如果您只需要一个拓扑,其中每个特定的路由键与队列 1:1 映射(同一应用程序中多个工作程序之间的循环分配任务是RabbitMQ文档中引用的示例),那么直接交换可能是更易于使用和使用,满足您的所有需求。这并不是说您不能使用Topic Exchanges完成同样的事情(您可以)。

同样,对于Fanout 交换,如果您有需要简单广播消息的情况,您可能会发现Fanout 交换更容易使用。同样,这并不是说您不能使用Topic Exchanges完成同样的事情(您可以)。

我通常只使用主题交换,因为我重视它们提供的灵活性。随着应用程序的扩展,它们可以在同一个交换中处理更多种类的用例,而其他两种类型可能不是这种情况。因此,我可以避免在应用程序增长时不得不在中途更改拓扑的可能性。

由于RabbitMQ的有关文档状态主题的交流

主题交换有非常广泛的用例。每当一个问题涉及多个消费者/应用程序有选择地选择他们想要接收的消息类型时,就应该考虑使用主题交换。

有关这些概念的更多信息,包括插图,这个页面有很多信息:https : //www.rabbitmq.com/tutorials/amqp-concepts.html