gpt4 book ai didi

c# - 持久资源管理器 (IEnlistmentNotification) 恢复

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:19 26 4
gpt4 key购买 nike

我正在通过实现 IEnlistmentNotification 创建一个资源管理器。我正在尝试创建一个耐用的 RM,这给我带来了一些问题。

  1. 每个事务应该有一个 IEnlistmentNotification 对象还是应该有一个 IEnlistmentNotification 对象来处理所有事务?

    我认为每个事务都需要它自己的,这样它就可以为每个事务执行准备/提交/回滚。

  2. 如何处理恢复文件?

    我的假设是事务中发生的所有事情都将在准备期间写入恢复文件。

    如何分离每笔交易的信息?我认为每个事务都会有一个单独的文件,或者单个文件会有一个用于每个恢复操作的某种事务 ID。

    恢复发生时,Transaction.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier 是否与崩溃前相同?那么,这些 ID 之一是否可以用于在恢复期间识别事务。

  3. 如何恢复?

    如果我有一个 TransactionScope,其中使用了我的资源管理器,并且系统在范围中间崩溃(插头被拔出或其他),当系统启动备份?我假设某个正在运行具有范围的代码的进程知道系统崩溃或其他什么?在那种情况下,设置了哪些系统/程序/服务来实际处理恢复?

最佳答案

我相信我在 RavenDB Source Code 中找到了我所有的答案.

  1. 是的,每个交易都应该有自己的 IEnlistmentNotification。
  2. 是的,您使用“Transaction.TransactionInformation.DistributedIdentifier/LocalIdentifier”来跟踪恢复文件中的事务。
  3. 运行代码的应用程序将检查是否需要恢复,并重新登记拔下插头时未完成的交易。

关于c# - 持久资源管理器 (IEnlistmentNotification) 恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056655/

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