共用方式為


建立卓越交易管理員

在 KTM 中,優勢交易管理員 是資源管理員,會為其參與的交易建立優先登記。 上級登記 是一項登記,可授與資源管理員協調登記交易 認可作業 的能力。 換句話說,交易用戶端或上層交易管理員可以啟動交易的預先準備/準備/認可順序。

在資源管理員為交易創建了上級登記之後,KTM 會拒絕針對該交易的所有 ZwCommitTransaction 呼叫。 因此,交易式客戶端無法提交這類交易。 相反地,建立上級登記的資源管理員必須呼叫 ZwPrePrepareEnlistmentZwPrepareEnlistment,以及 ZwCommitEnlistment

建立上級交易管理員的時機

假設您想要整合事務處理系統 (TPS) 元件與 KTM,但元件包含用戶端可以呼叫的專屬非 KTM 交易管理功能。 在這種情況下,您可能必須建立上級交易管理員。

例如,假設您的元件提供用戶端用來建立和認可交易的專屬介面。 因為您的元件的客戶端不會呼叫 KTM 來建立或提交交易,所以當您將元件整合到以 KTM 為基礎的 TPS 時,您的元件必須成為主要的交易管理者。

如何建立優質交易管理員

如果您想要讓元件成為上級交易管理員,它必須執行下列動作:

  1. 呼叫 ZwCreateResourceManager 註冊為資源管理員。

  2. 每當您的元件客戶端透過元件的用戶端介面建立交易時,請呼叫 ZwCreateTransaction

  3. 呼叫 ZwCreateEnlistment,設定 ENLISTMENT_SUPERIOR 旗標,同時指定 ENLISTMENT_SUPERIOR_RIGHTS 和 ENLISTMENT_SUBORDINATE_RIGHTS 存取旗標。

  4. 呼叫 ZwPrepareEnlistmentZwPrepareEnlistment,並在元件用戶端呼叫元件的用戶端介面來認可交易時,ZwCommitEnlistment

KTM 只允許每次交易進行一次高級註冊。 其他資源管理員可以建立其他登記。 這些登記稱為 次級登記,因為它們無法起始認可作業。

若要復原上級登記,您的上級交易管理員會呼叫 ZwRollbackEnlistment

若要復原高階註冊,您的高階交易管理員會呼叫 ZwRecoverEnlistment

當上級交易管理員認可、回復或復原交易時,KTM 會將 交易通知 傳送給所有次級登記,讓其能夠參與。

包含上層交易管理員的 TPS 無法使用 單階段認可作業

在復原作業期間,如果 KTM 無法判斷交易的結果,它會將TRANSACTION_NOTIFY_RECOVER_QUERY通知傳送給上級交易管理員。 作為回應,若交易可以認可,上級交易管理員必須呼叫 ZwCommitEnlistment;若交易應該回滾,則呼叫 ZwRollbackEnlistment。 如果上級交易管理員無法判斷交易的結果,在判斷結果之前,它不應該回應TRANSACTION_NOTIFY_RECOVER_QUERY通知。