没有 DTC 参与的 NServiceBus 5?

NServiceBus 5 without DTC involvement?

我正在通读文档,但以下内容让我感到困惑,因为它在文档顶部说明了版本 5 我们无需使用 DTC 即可获得可靠性。

These feature has been implemented using both the Outbox pattern and the Deduplication pattern. As a message is dequeued we check to see if we have previously processed it. If so, we then deliver any messages in the outbox for that message but do not invoke message-processing logic again. If the message wasn't previously processed, then we invoke the regular handler logic, storing all outgoing message in a durable storage in the same transaction as the users own database changes. Finally we send out all outgoing messages and update the deduplication storage.

我确定这可能是由于我缺乏理解,但事实是 NServiceBus 正在打开它自己的连接和事务,与消息处理程序(例如;调用存储库进行保存)数据库连接事务分开会使用 DTC 升级为完整的 2PC 吗?

这是文档:

http://docs.particular.net/nservicebus/outbox/

谢谢!

是的,会的。这就是它与您分享它们的原因。

NServiceBus 在消息处理程序中向您公开这些,以便您可以重用它们并避免升级。

简单地依赖NHibernateStorageContext 在您的消息处理程序构造函数中,它使您可以访问正确的 NHibernate.ISessionNHibernate.ITransaction.