0

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

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

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

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

文档未能解释的是将解决方案视为complex.

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

有人知道吗?

4

1 回答 1

0

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

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

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

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

希望这是有道理的。

于 2015-10-15T18:13:50.550 回答