NServiceBus 5没有DTC参与?

时间:2015-05-09 21:33:37

标签: nservicebus msdtc nservicebus5

我正在阅读文档,以下内容让我感到困惑,因为它在版本5的文档顶部指出我们在不使用DTC的情况下获得了可靠性。

  

这些功能已使用发件箱模式和重复数据删除模式实现。当消息出列时,我们检查是否已经处理过它。如果是这样,我们然后在该消息的发件箱中传递任何消息,但不再次调用消息处理逻辑。 如果以前没有处理过该消息,那么我们调用常规处理程序逻辑,将所有传出消息存储在与用户自己的数据库更改相同的事务中的持久存储中。最后,我们发送所有传出消息并更新重复数据删除存储。

我确定这可能是由于我缺乏理解,但不是NServiceBus打开它自己的连接和事务而不是消息处理程序(例如,调用存储库以保存)数据库连接事务将是使用DTC升级到完整的2PC?

以下是文档:

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

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,它会的。这就是为什么它与你分享它们。

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

只需依赖NHibernateStorageContext  在您的消息处理程序构造函数中,它允许您访问正确的NHibernate.ISessionNHibernate.ITransaction