다음을 통해 공유


Resource Manager 작성

서비스 또는 구성 요소를 작성하고 트랜잭션 서비스를 사용해야 하거나 커널 트랜잭션의 상태를 모니터링해야 하는 경우 RM(리소스 관리자)을 만들어야 합니다.

리소스 관리자를 작성하려면 여러 커널 개체를 만들어야 합니다. RM에서 사용하는 개체는 다음과 같습니다.

  • TM(트랜잭션 관리자) 개체
  • 개체 Resource Manager
  • 인리스트먼트 개체

먼저 TM 개체를 만듭니다. TM에는 두 가지 유형이 있습니다.

  • Volatile – 이러한 TM에는 로그가 없으며 상태를 복구할 수 없습니다.
  • 지속성 – 이러한 TM에는 로그가 있습니다.

지속성 TM을 만들려면 CLFS 로그를 만들고 CreateTransactionManager 를 호출하거나 KTM이 만들어지도록 해야 합니다. 지속성 TM을 만든 후에는 먼저 RecoverTransactionManager를 호출하여 TM을 복구해야 합니다. TM이 복구되면 사용할 수 있습니다.

기존 TM을 복구한 경우 이 TM과 연결된 모든 RM이 복구 메시지 수신을 시작합니다. 자세한 내용은 복구 처리를 참조하세요.

다음으로, TM 핸들을 사용하여 CreateResourceManager 를 호출하여 리소스 관리자를 만듭니다. RM은 휘발성 또는 내구성이 있을 수 있습니다. 지속성 RM에는 지속성 TM만 사용할 수 있습니다.

트랜잭션으로 작업할 때 CreateEnlistment를 호출하고 받을 알림을 지정하여 트랜잭션에 참여합니다.

참고CreateEnlistment 에 대한 호출이 완료되기 전에 알림 수신을 시작할 수 있습니다.

알림을 받으면 알림 처리와 관련된 작업이 완료되면 적절한 "Complete*" 함수를 호출합니다. 전체 함수는 다음과 같습니다.

언제든지 리소스 관리자가 트랜잭션 작업을 완료할 수 없거나 계속하면 애플리케이션이 트랜잭션 내에서 수행된 작업을 실행 취소할 수 없는 경우 RollbackEnlistment를 호출하여 트랜잭션을 롤백해야 합니다.