Ressourcen-Manager
Ein Ressourcen-Manager verwendet das Transaktion-Manager-Protokoll, um den Transaktionsstatus nachzuverfolgen. Die Aktion des Ressourcen-Managers beim Verarbeiten einer Transaktion sieht wie folgt aus:
- Der Client übergibt eine Transaktion explizit an den RM.
- Der RM wird mit createEnlistmentin die Transaktion eintragen.
- Der Benutzer kann dann mit dem Ausführen eines beliebigen Vorgangs fortfahren.
- Wenn der Benutzer CommitTransaction aufruft, sendet DER EINE PREPARE _ TRANSACTION-Benachrichtigung an den RM. An diesem Punkt leert der RM alle Änderungen, die zum Committen der Transaktion erforderlich wären, auf den Datenträger, kann aber fehlschlagen. Wenn diese Vorgänge erfolgreich sind, signalisiert der RM, dass der Vorbereitungsvorgang abgeschlossen ist, indem er PrepareComplete aufruft. Wenn diese Vorgänge fehlschlagen, antwortet der RM durch Aufrufen von RollBackEnlistment.
- Der Ressourcen-Manager empfängt eine Vorbereitungsbenachrichtigung.
- Der Ressourcen-Manager leert alle daten, die der Transaktion zugeordnet sind, in die Common Log Services-Protokolldatei.
- Der Ressourcen-Manager ruft die PrepareComplete-Funktion auf und wartet darauf, das Transaktionsergebnis von DER TRANSAKTION zu empfangen.
- Abhängig vom Ergebnis der Transaktion empfängt der Ressourcen-Manager ein Commit- oder Rollbackbenachrichtigungsereignis. Wenn der Ressourcen-Manager eine Commitbenachrichtigung empfängt, macht er die Änderungen dauerhaft und informiert den AUFTRAG durch Aufrufen der CommitComplete-Funktion. Wenn der Ressourcen-Manager eine Rollbackbenachrichtigung empfängt, verwirft er alle Änderungen und stellt den Zustand wieder her, der vor einer der transaktiven Änderungen vorhanden war, und informiert den ENTF durch Aufrufen von RollbackComplete.
Resource Manager Functions
Die folgenden Funktionen werden mit Ressourcen-Managern verwendet.
| Funktion | BESCHREIBUNG |
|---|---|
| CreateResourceManager | Erstellt ein neues Resource Manager-Objekt (RM) und ordnet den RM einem Transaktions-Manager (TM) zu. |
| GetNotificationResourceManager | Fordert eine Benachrichtigung für einen Ressourcen-Manager (RM) an und empfängt sie. Diese Funktion wird vom RM-Register verwendet, um Benachrichtigungen zu empfangen, wenn sich der Status einer Transaktion ändert. |
| GetNotificationResourceManagerAsync | Fordert asynchrone Benachrichtigungen für einen Ressourcen-Manager (RM) an und empfängt sie. Diese Funktion wird vom RM-Register verwendet, um Benachrichtigungen zu empfangen, wenn sich der Status einer Transaktion ändert. |
| OpenResourceManager | Öffnet einen vorhandenen Ressourcen-Manager (RM). |
| PrepareComplete | Gibt an, dass der Ressourcen-Manager (RM) alle Verarbeitungsvorgänge abgeschlossen hat, die erforderlich sind, um sicherzustellen, dass ein Commit- oder Abbruchvorgang für die angegebene Transaktion erfolgreich ist. |
| PrePrepareComplete | Signalisiert, dass dieser Ressourcen-Manager seine Vorbereitungsvorgänge abgeschlossen hat, sodass andere Ressourcen-Manager nun mit den Vorbereitungsvorgängen beginnen können. |
| SetResourceManagerCompletionPort | Ordnet den angegebenen E/A-Abschlussport dem angegebenen Ressourcen-Manager (RM) zu. Dieser Port empfängt alle Benachrichtigungen für den RM. |