【问题标题】:NServiceBus RabbitMQ - DirectRoutingTopology vs Separate exchanges for each message typeNServiceBus RabbitMQ - DirectRoutingTopology 与每种消息类型的单独交换
【发布时间】:2015-10-14 07:54:51
【问题描述】:

我们在 MSMQ 之上使用 NServiceBus。现在我们正在着手使用 RabbitMQ - 我们想要一个集中式队列,并且发现 RabbitMQ 最能满足我们的需求。

转换我们的项目很容易,在 RabbitMQ 中,我们注意到它为每个端点和该端点中的消息类型创建了一个交换(和队列)。

我已经阅读了http://docs.particular.net/nservicebus/rabbitmq/configuration-api 中的更改路由拓扑部分,它写在那里

对于不太复杂的场景,您可以使用 DirectRoutingTopology

文档未能解释的是将解决方案视为complex 的参数。

我已经搜索并找不到解释什么被认为是复杂的地方,以及何时应该使用DirectRoutingTopology 而不是使用多个交换的默认选项。或者每种方法之间的区别/性能考虑是什么。

有人知道吗?

【问题讨论】:

    标签: rabbitmq nservicebus rabbitmq-exchange nservicebus5 nservicebus-rabbitmq


    【解决方案1】:

    这实际上不是性能问题,而是以尽可能最好的方式使用技术的问题。

    每个队列都是要完成的工作单元。所以假设我在 messageA 中发送,如果有 1 个工作单元要完成,那么与 1 个队列进行 1 个交换来处理消息是有意义的。

    假设您有 messageB 需要执行操作 X Y 两者。在这种情况下,您将有 1 个交换器将消息发送到 2 个不同的队列(FANOUT Exchange)

    假设您有 messageC 需要根据参数执行操作 X OR Y。在这种情况下,您需要使用 DIRECT 交换并指定路由到 2 个不同的队列(但消息只会在 2 个队列中的 1 个中结束)。

    希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2019-11-05
      • 2011-05-20
      • 2020-03-31
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多