IEnlistmentNotification
을 구현하여 리소스 관리자를 만들고 있습니다. 나는 내게 몇 가지 질문을 제기 한 내구성있는 RM을 만들려고 노력하고있다. 영구 리소스 관리자 (IEnlistmentNotification) 복구
- 트랜잭션 당
IEnlistmentNotification
객체가 있어야 또는 단일IEnlistmentNotification
목적은 모든 트랜잭션을 처리해야합니까?나는 각 트랜잭션이 자신이 그것을 원할 것이므로 각 트랜잭션마다 Prepare/Commit/Rollback을 할 수 있다고 생각한다.
복구 파일은 어떻게 처리됩니까?
내 가정은 준비 중에 트랜잭션에서 일어나는 모든 작업이 복구 파일에 기록된다는 가정입니다.
각 거래의 정보를 어떻게 분리 할 수 있습니까? 나는 각각의 트랜잭션이 개별 파일을 가지거나 하나의 파일이 각 복구 작업을위한 일종의 트랜잭션 ID를 가질 것이라고 생각한다.
복구가 진행 중일 때
Transaction.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier
은 (는) 충돌 이전과 동일합니까? 따라서 이러한 ID 중 하나를 사용하여 복구 중 트랜잭션을 식별 할 수 있습니다.어떻게 복구가 발생합니까?
내 리소스 관리자가 내부에 사용중인
TransactionScope
이 있고 범위의 중간에 시스템 충돌 (플러그가 꽂혀 있거나 무엇이든)이 발생하면 시스템이 다시 시작될 때 복구가 어떻게됩니까? 시스템 충돌에 대해 알고있는 범위의 코드를 실행하고있는 프로세스가 있다고 가정합니다. 이 경우 어떤 시스템/프로그램/서비스가 실제로 복구를 처리하도록 설정되어 있습니까?