我正在学习 NServiceBus 和 MSMQ。有人告诉我 MSMQ 中的事务队列很糟糕,使用它们对性能非常不利。有谁知道为什么?我猜这来自它使用 DTC 的概念,每个人都知道 DTC 并不是真正的可扩展解决方案。在我看来,带有 NServiceBus 的 MSMQ 并没有那么糟糕有几个原因,但我不知道我是否完全理解它是如何工作的。从逻辑上看,我可以想到 NServiceBus 可能使用事务来获得保证交付的 3 个地方:
- 通过网络发送消息时,您可能希望使用事务来确保消息在丢弃之前已到达远程队列。
- 从本地队列读取消息时,您可能希望确保在丢弃它之前成功处理它。
- 向多个订阅者发布消息时,您可能希望确保它在丢弃之前到达所有订阅者。(我真的希望这不是 NServiceBus 所做的)
谁能告诉我 NServiceBus 是如何做到这一点的?