gpt4 book ai didi

rabbitmq - RabbitMQ 中的主题交换与直接交换

转载 作者:行者123 更新时间:2023-12-03 01:24:32 24 4
gpt4 key购买 nike

我们有一个将使用 RabbitMQ 的应用程序,并且有几个不同的队列用于在层之间传递消息。

最初,我计划使用多个直接交换,每种消息类型一个,但看起来使用不同路由键绑定(bind)与队列进行单个主题交换将实现相同的效果。

拥有一个单一的交换似乎也更容易维护,但我想知道以一种方式进行比另一种方式是否有任何好处(如果有的话)?

选项 1,使用多个直接交换:

ExchangeA (type: direct)
-QueueA

ExchangeB (type: direct)
-QueueB

ExchangeC (type: direct)
-QueueC

选项 2,使用单一主题交换:

Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")

最佳答案

假设这两种模型都被认为是使用一个运行的代理来实现的,那么我可以看到几乎没有什么区别。

选项 2 在现实世界中似乎更常见,用于解决此类路由问题(至少在我的轶事经验中),而这正是主题交换所要解决的挑战。

您可能遇到的唯一差异与路由速度有关。我不确定与 Topic Exchange 中使用的路由 key 技术(可以包括像 #* 这样的通配符)相比,RabbitMQ 中的 Exchange 路由(始终基于精确的字符串匹配)是否更快。我的预感是 Exchange 歧视会更快,但您可以自己尝试一下来找出答案,或者尝试联系 RabbitMQ 团队询问他们。

最后,如果您选择选项 1,最终会出现大量队列,那么您的 Exchange 将会成比例激增。这听起来像是一个令人头痛的维护问题。如果您只有少数队列,那么这不会是太大的问题。

关于rabbitmq - RabbitMQ 中的主题交换与直接交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com