Tranzakcióértesítések

A KTM minden erőforrás-kezelőhöz biztosít egy értesítési üzenetsort. A KTM értesítéseket küld egy erőforrás-kezelőnek úgy, hogy azokat az erőforrás-kezelő üzenetsorába helyezi.

Az erőforrás-kezelők szinkronizálva vagy aszinkron módon is lekérhetik az értesítéseket az üzenetsorból.

  • Ha szinkron módon szeretné lekérni az értesítéseket, az erőforrás-kezelő ismételten meghívhatja a ZwGetNotificationResourceManagert.

  • Az értesítések aszinkron fogadásához az erőforrás-kezelő meghívhatja a TmEnableCallbackst a visszahívási rutin beállításához. A KTM minden alkalommal meghívja a visszahívási rutint, amikor értesítést helyez az erőforrás-kezelő üzenetsorába.

Amikor egy erőforrás-kezelő meghívja a ZwCreateEnlistmentet , hogy hozzon létre egy regisztrációt egy tranzakcióhoz, az erőforrás-kezelő határozza meg, hogy milyen típusú értesítéseket kell kapnia. Az erőforrás-kezelők csak az általuk regisztrált értesítéseket kapják meg.

Az értesítési állandók a Ktmtypes.h fájlban vannak definiálva. Az értesítési állandók nevei TRANSACTION_NOTIFY_Xxx formátumúak.

A témakör többi része felsorolja a Ktmtypes.h által definiált összes értesítési állandót, és három csoportra osztja őket:

  • Értesítések, amelyeket az erőforrás-kezelők fogadhatnak

  • Értesítések, amelyeket a felsőbb szintű tranzakciókezelők fogadhatnak

  • Definiált, de jelenleg nem használt értesítési állandók

Erőforrás-kezelők értesítései

Minden erőforrás-kezelőnek regisztrálnia kell a TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE és TRANSACTION_NOTIFY_COMMIT értesítések fogadásához, még akkor is, ha később meghívják a ZwReadOnlyEnlistmentet , hogy csak olvashatóként jelöljön meg egy regisztrációt.

Az erőforrás-kezelők támogathatják a TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT, de támogatniuk kell a többfázisú előkészületi, előkészítési és véglegesítési értesítéseket is.

Az alábbi lista tartalmazza az erőforrás-kezelők által megkapható összes értesítést:

TRANZAKCIÓ_ÉRTESÍTÉS_ELŐKÉSZÍTÉS
Küldéskor: Az ügyfél meghívja a ZwCommitTransactiont , és egyetlen erőforrás-kezelő sem támogatja az egyfázisú véglegesítést, vagy ha egy kiváló tranzakciókezelőmeghívja a ZwPrePrepareEnlistmentet.

Érkezett: Erőforrás-kezelők.

A címzett szükséges művelete: Végezze el az előkészületi műveleteket, majd hívja meg a ZwPrePrepareComplete parancsot. (Az előkészületi műveletekről további információt a Véglegesítési műveletek kezelése című témakörben talál.)

Korlátozások: Az erőforrás-kezelőnek TRANSACTION_NOTIFY_PREPARE és TRANSACTION_NOTIFY_COMMIT is támogatnia kell.

TRANZAKCIÓ_ÉRTESÍTÉS_ELŐKÉSZÍTÉS
Elküldve: TRANSACTION_NOTIFY_PREPREPARE után, ha egy ügyfél meghívja a ZwCommitTransactiont , és egyetlen erőforrás-kezelő sem támogatja az egyfázisú véglegesítést, vagy ha egy kiváló tranzakciókezelő meghívja a ZwPrepareEnlistmentet.

Érkezett: Erőforrás-kezelők.

A címzett szükséges művelete: Végezze el az előkészítési műveleteket, majd hívja meg a ZwPrepareComplete-t. (A műveletek előkészítésével kapcsolatos további információkért lásd: Véglegesítési műveletek kezelése.)

Korlátozások: Az erőforrás-kezelőnek TRANSACTION_NOTIFY_PREPREPARE és TRANSACTION_NOTIFY_COMMIT is támogatnia kell.

TRANZAKCIÓ_ÉRTESÍTÉS_ELKÖTELEZÉS
Elküldve: TRANSACTION_NOTIFY_PREPARE után, ha egy ügyfél meghívja a ZwCommitTransactiont , és egyetlen erőforrás-kezelő sem támogatja az egyfázisú véglegesítést, vagy ha egy kiváló tranzakciókezelő meghívja a ZwCommitEnlistmentet.

Érkezett: Erőforrás-kezelők.

A címzett szükséges művelete: Véglegesítési műveletek végrehajtása, majd a ZwCommitComplete meghívása. (További információ a véglegesítési műveletekről: Véglegesítési műveletek kezelése.)

Korlátozások: Az erőforrás-kezelőnek támogatnia kell a TRANSACTION_NOTIFY_PREPREPARE-t és a TRANSACTION_NOTIFY_PREPARE-t.

TRANZAKCIÓ_ÉRTESÍTÉS_EGYES_FÁZISÚ_ELKÖTELEZETTSÉG
Küldéskor: Az ügyfél meghívja a ZwCommitTransactiont , és egy erőforrás-kezelő támogatja az egyfázisú véglegesítési műveleteket.

Érkezett: Erőforrás-kezelők.

A címzett szükséges művelete: Véglegesítse a tranzakciót, vagy hívja meg a ZwSinglePhaseReject parancsot. (Az egyfázisú véglegesítési műveletekkel kapcsolatos további információkért lásd: Véglegesítési műveletek kezelése.)

Korlátozások: Az erőforrás-kezelőnek támogatnia kell TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE és TRANSACTION_NOTIFY_COMMIT is.

TRANSACTION_NOTIFY_ROLLBACK
Küldéskor: Egy ügyfél meghívja a ZwRollbackTransactiont, egy kiváló tranzakciókezelő meghívja a ZwRollbackEnlistmentet, vagy a KTM hibát észlel (például sikertelen írást a naplóstreambe).

Érkezett: Mind az erőforrás-kezelők, mind a felettes tranzakciókezelők.

A címzett szükséges művelete: Hajtsa végre a tranzakció adatainak visszaállításához szükséges műveleteket, majd hívja meg a ZwRollbackComplete parancsot. (A visszaállítási műveletekkel kapcsolatos további információkért lásd a visszaállítási műveletek kezelését ismertető témakört.)

Korlátozások: Minden erőforrás-kezelőnek és kiváló tranzakciókezelőnek támogatnia kell TRANSACTION_NOTIFY_ROLLBACK.

TRANZAKCIÓ_ÉRTESÍTÉS_HELYREÁLLÍTÁS
Küldéskor: Egy erőforrás-kezelő meghívja a ZwRecoverResourceManagert.

Fogadta: Erőforrás-kezelők.

A címzett szükséges művelete: Az erőforrás-kezelőnek meg kell hívnia a ZwRecoverEnlistment parancsot. (A helyreállítási műveletekről további információt a Helyreállítási műveletek kezelése című témakörben talál.)

Korlátozások: Egyik sem.

TR_TRANZAKCIÓ_UTOLSÓ_HELYREÁLLÍTÁS
Küldéskor: Miután a KTM elküldte az utolsó TRANSACTION_NOTIFY_RECOVER-t egy erőforrás-kezelői bejegyzéshez.

Érkezett: Erőforrás-kezelők.

A címzett szükséges művelete: A helyreállítási művelet befejezése. (A helyreállítási műveletekről további információt a Helyreállítási műveletek kezelése című témakörben talál.)

Korlátozások: Egyik sem.

TRANSACTION_NOTIFY_INDOUBT
Elküldve: Miután egy erőforrás-kezelő meghívja a ZwRecoverEnlistmentet, a KTM nem tudja megállapítani, hogy a tranzakciót le kell-e véglegesíteni vagy vissza kell-e állítani (általában azért, mert a TPS rendelkezik egy kiváló tranzakciókezelővel, amely nem érhető el).

Érkezett: Erőforrás-kezelők.

A címzett kötelező művelete: Ne tegyen semmit, amíg a KTM nem küld TRANSACTION_NOTIFY_COMMIT vagy TRANSACTION_NOTIFY_ROLLBACK.

Korlátozások: Egyik sem.

TRANSACTION_NOTIFY_RM_KAPCSOLAT_MEGSZAKADT
Küldéskor: Az egyfázisú véglegesítési műveletet kezelő erőforrás-kezelő anélkül zárja be a beléptetési leírót, hogy jelezze, hogy véglegesíti vagy visszaállította a tranzakciót.

Érkezett: Erőforrás-kezelők és magasabb rendű tranzakciókezelők, akik csatlakozásokkal rendelkeznek a tranzakcióhoz.

A címzett szükséges művelete: Tranzakcióspecifikus törlési műveletek. Ez az értesítés általában az erőforrás-kezelők számára hasznos, amelyek csak olvashatóak.

Korlátozások: Egyik sem.

Értesítések a felsőbb szintű tranzakciókezelők számára

A felsőbb szintű tranzakciókezelők a következő értesítéseket kaphatják:

TRANSACTION_NOTIFY_ROLLBACK
Lásd a korábbi leírást.

TRANSACTION_NOTIFY_RM_LECSATLAKOZVA
Lásd a korábbi leírást.

TRANSACTION_NOTIFY_PREPREPARE_COMPLETE
Elküldve: Miután az összes erőforrás-kezelő megkapta a TRANSACTION_NOTIFY_PREPREPARE, és a ZwPrePrepareComplete meghívásával válaszolt.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett szükséges művelete: A felsőbb szintű tranzakciókezelőnek meg kell hívnia a ZwPrepareEnlistment parancsot.

TRANSACTION_NOTIFY_PREPARE_COMPLETE
Elküldve: Miután az összes erőforrás-kezelő megkapta a TRANSACTION_NOTIFY_PREPARE, és a ZwPrepareComplete meghívásával válaszolt.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett szükséges művelete: A felsőbb szintű tranzakciókezelőnek meg kell hívnia a ZwCommitEnlistment parancsot.

TRANSACTION_NOTIFY_COMMIT_COMPLETE
Elküldve: Miután az összes erőforrás-kezelő megkapta a TRANSACTION_NOTIFY_COMMIT, és a ZwCommitComplete meghívásával válaszolt.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett kötelező művelete: Tranzakciókarbantartási műveletek.

TRANZAKCIÓ_ÉRTESÍTÉS_VISSZAVONÁS_BEFEJEZVE
Elküldve: Miután az összes erőforrás-kezelő megkapta a TRANSACTION_NOTIFY_ROLLBACK, és a ZwRollbackComplete meghívásával válaszolt.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett kötelező művelete: Tranzakciókarbantartási műveletek.

TRANSACTION_NOTIFY_RECOVER_QUERY
Küldéskor: Egy kiváló tranzakciókezelő meghívja a ZwRecoverResourceManagert.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett szükséges művelete: A felsőbb szintű tranzakciókezelőnek meg kell hívnia a ZwCommitEnlistment vagy a ZwRollbackEnlistment parancsot a regisztrációhoz.

TRANSACTION_NOTIFY_COMMIT_REQUEST
Küldéskor: Egy ügyfél meghívja a ZwCommitTransactiont. Ha egy felettes tranzakciókezelő regisztrált erre az értesítésre egy bevonáshoz, a KTM TRANSACTION_NOTIFY_COMMIT_REQUEST küldi a felettes tranzakciókezelőnek ahelyett hogy TRANSACTION_NOTIFY_COMMIT küldi az erőforrás-kezelőknek.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett szükséges művelete: A felsőbb szintű tranzakciókezelő meghívja a ZwCommitEnlistment parancsot.

TRANSACTION_NOTIFY_REQUEST_OUTCOME
Küldéskor: Egy erőforrás-kezelő meghívja a TmRequestOutcomeEnlistment parancsot, amíg a tranzakció előkészített állapotban van.

Érkezett: Felsőbb szintű tranzakciókezelők.

A címzett szükséges művelete: A felsőbb szintű tranzakciókezelőnek meg kell hívnia a ZwCommitEnlistment vagy a ZwRollbackEnlistment parancsot.

Nem használt értesítések

A következő értesítések a Ktmtypes.h fájlban vannak definiálva, de a KTM jelenleg nem támogatja őket:

TRANSACTION_NOTIFY_DELEGATE_COMMIT

TRANSACTION_NOTIFY_ENLIST_MASK

TRANZAKCIÓ_ÉRTESÍTÉS_FELVÉTEL_ELŐKÉSZÍTÉS

TRANSACTION_NOTIFY_MARSHAL

TRANZAKCIÓ_ÉRTESÍTÉS_ELŐLÉPTETÉS

TRANZAKCIÓ_ÉRTESÍTÉS_ELŐLÉPTETÉS_ÚJ

TRANSACTION_NOTIFY_PROPAGATE_PULL

TRANSACTION_NOTIFY_PROPAGATE_PUSH

TRANSACTION_NOTIFY_TM_ONLINE

TRANSACTION_NOTIFY_COMMIT_FINALIZE