gpt4 book ai didi

nhibernate - NServiceBus/NHibernate 需要 MSDTC 吗?

转载 作者:行者123 更新时间:2023-12-01 01:33:21 26 4
gpt4 key购买 nike

我正在编写 NServiceBus 解决方案并尝试使用 DBSubcriptionStorage。这使用 NHibernate 进行数据访问,我得到以下异常:

The partner transaction manager has disabled its support for remote/network transactions



我可以启用 MSDTC,但我的问题是:这个要求来自哪里,我可以删除它吗?

我不熟悉 NHibernate,我不知道它是否需要 MSDTC 或 NServiceBus 是否需要。 NServiceBus 订阅数据库中只有一个平面表,我几乎看不到在这种情况下使用 MSDTC。

我可以取消 MSDTC 要求吗?我是否必须为此编写自己的订阅持久层?

谢谢

最佳答案

MSDTC 是一种很棒的小动物,但也可能非常阴险。

首先,我建议如果您知道自己永远不想成为分布式事务的一部分,请在开发服务器上将其关闭。您不想在 DEV 中自动升级到分布式事务,只是为了发现它会降低您的实际性能或在生产中不起作用。

话虽如此,答案是像 NHibernate 这样的 ORM 不会,但如果满足以下条件之一,则很可能让 MSDTC 参与进来:

  • 您正在查询链接到另一台服务器的事务中的 View /表。
  • 您在单个 TransactionScope
  • 中使用了两个 SqlConnections(或 NHibernate 使用的任何东西)
  • 您正在 TransactionScope 内征用另一个事务组件(如 MSMQ 或事务文件系统)。

  • 如果满足这些条件中的任何一个(当然还有其他一些我已经忘记了),您的事务将自动升级为分布式事务,并且必然会涉及到 MSDTC。这意味着不仅 MSDTC 必须为您的盒子工作和配置,它还必须为所有想要参与您的交易的盒子配置。在简单的 SQL Server 方案中,这意味着您的应用服务器和 SQL Server 都需要运行它并为分布式事务配置它。

    我不熟悉 NServiceBus,但我倾向于认为它具有各种功能,可以将消息以事务方式放置在队列中。

    关于nhibernate - NServiceBus/NHibernate 需要 MSDTC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464122/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com