IEnlistmentNotification
を実装してリソースマネージャを作成しています。私は私のためにいくつかの質問をもたらした耐久性のあるRMを作成しようとしています。 耐久性のあるリソースマネージャ(IEnlistmentNotification)リカバリ
- は、トランザクションごと
IEnlistmentNotification
オブジェクトが存在するか、単一IEnlistmentNotification
のオブジェクトは、すべてのトランザクションを処理する必要がありますか?私は、それぞれのトランザクションがそれ自身を望むと思うので、トランザクションごとにPrepare/Commit/Rollbackを実行できます。
リカバリファイルはどのように処理されますか?
私が想定していることは、トランザクションで起こっていることは、準備中に回復ファイルに書き込まれるということです。
各トランザクションの情報をどのように分離できますか?私は、各トランザクションが別々のファイルを持っていると思います、または、単一のファイルが各回復操作のためのある種のトランザクションIDを持っていると思います。
リカバリが行われているときに、
Transaction.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier
はクラッシュ前と同じですか?したがって、これらのIDの1つは、リカバリ中にトランザクションを識別するために使用できます。復旧はどのように行われますか?
私のリソースマネージャーがその内部で使用されていて、スコープの真ん中でシステムがクラッシュ(プラグが抜かれたものなど)されている場合は、システムのバックアップが開始されるとどのように復旧しますか?私は、システムクラッシュなどについて知っている範囲を持つコードを実行していたプロセスを想定していますか?その場合、どのシステム/プログラム/サービスが実際に復旧を処理するためにセットアップされていますか?