NServiceBus RabbitMQ - DirectRoutingTopology vs每种消息类型的单独交换

时间:2015-10-14 07:54:51

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

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

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

我已阅读http://docs.particular.net/nservicebus/rabbitmq/configuration-api中的更改路由拓扑部分并将其写入

  

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

文档无法解释的是将解决方案视为o1=Parent() o2=Parent() o3=Parent() 的参数。

我已经搜索过,无法找到解释复杂内容的地方,何时应该使用complex覆盖使用多个交换的默认选项。或者每种方法之间的差异/性能考虑因素是什么。

有人知道吗?

1 个答案:

答案 0 :(得分:0)

这不是性能问题,而是以最佳方式使用该技术。

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

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

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

希望这很有道理。