我正在学习NServiceBus和MSMQ。有人告诉我,MSMQ中的事务队列是不良的,使用它们对性能来说真的很糟糕。有谁知道为什么?我猜测这是来自它使用DTC的概念,并且每个人都知道DTC并非真正的可扩展解决方案。在我看来,MSMQ和NServiceBus并不是那么糟糕,但我不知道我是否理解它是如何工作的。在此寻找逻辑,我能想到的3个地方NServiceBus可能为了利用交易得到保证传输:NServiceBus:不是MSMQ事务BAD?
- 当发送跨网络的消息,你可能想使用事务,以确保消息有在丢弃之前已经到达远程队列。
- 从本地队列中读取消息时,可能需要确保在丢弃消息之前处理成功。
- 向多个订阅者发布消息时,可能需要确保在放弃消息之前将其发送到所有消息。 (我真的希望这不是什么NServiceBus)
任何人都可以设置我直接如何NServiceBus做到这一点?
他们可能是一个有点性能挑战 - 但我不会称他们为坏 - 具有交易的操作通常是“好事”(TM) – 2010-08-18 18:29:24
发送事务性MSMQ消息不使用DTC。 虽然发送事务性MSMQ消息并将事实写入SQL服务器(作为示例)将使用DTC。 – 2010-09-02 12:22:49