Nachrichtenflusstransaktionen

Nachrichtenflüsse unterstützen zwei Möglichkeiten für Transaktionen:
  1. Koordinierte Nachrichtenflüsse stellen sicher, dass alle Ressourcenaktualisierungen gemeinsam mit einer einzigen Transaktion festgeschrieben oder zurückgesetzt werden.
  2. Nicht koordinierte Nachrichtenflüsse ermöglichen das unabhängige Auftreten von Ressourcenaktualisierungen. Die Aktualisierungen sind nicht von dem gesamten Erfolg oder Fehlschlag des Nachrichtenflusses betroffen.

Koordinierte Nachrichtenflüsse

Ein Nachrichtenfluss, der Interaktionen mit einer externen Datenbank oder anderen wiederherstellbaren Ressourcen einschließt, kann so konfiguriert werden, dass seine gesamte Verarbeitung innerhalb einer Transaktion koordiniert wird. Durch diese Koordination wird sichergestellt, dass die gesamte Verarbeitung entweder erfolgreich oder überhaupt nicht abgeschlossen wird. Die Transaktion wird festgeschrieben (wenn die gesamte Verarbeitung erfolgreich ist) oder zurückgegeben (wenn mindestens ein Teil der Verarbeitung nicht erfolgreich ist). Dadurch können alle betroffenen Ressourcen (Warteschlangen, Datenbanken usw.) einen durchgängigen Zustand beibehalten, und die Datenintegrität ist gewahrt.

Die Aktualisierungen durch einen koordinierten Nachrichtenfluss werden festgeschrieben, sobald die Verarbeitung der Eingabenachricht erfolgreich vom Nachrichtenfluss abgeschlossen wurde. Die Aktualisierungen werden in den folgenden Fällen zurückgesetzt:
  1. Ein beliebiger Knoten innerhalb des Nachrichtenflusses löst eine Ausnahmebedingung aus, die von keinem Knoten außer dem Empfangsknoten abgefangen wird, und
  2. Es besteht keine Verbindung zum Catch-Terminal des Empfangsknotens.

Zur Konfiguration eines koordinierten Nachrichtenflusses müssen Sie die Eigenschaft Coordinated (Koordiniert) des Nachrichtenflusses festlegen.

Für einige Empfangsknoten (z. B. MQEmpfangsknoten, oder SCADAEmpfangsknoten) kann die Eigenschaft Transaktionsmodus im Nachrichtenfluss auf Automatisch gesetzt werden. Dadurch werden Nachrichten ein Teil der globalen Transaktion, und der Nachrichtenfluss wird als transaktionsorientierter Nachrichtenfluss (wenn die Nachricht persistent ist) bzw. als nicht koordinierter Nachrichtenfluss (wenn die Eingabenachricht nicht persistent ist) gekennzeichnet. Wenn der Nachrichtenfluss durch den Empfangsknoten als transaktionsorientiert gekennzeichnet wurde, werden die nachfolgenden Knoten im Nachrichtenfluss, durch die die Eigenschaft 'Transaktionsmodus' auf Automatisch gesetzt wurde, in die globale Transaktion eingeschlossen.

Die Transaktionskoordination von Nachrichtenflüssen wird auf verteilten Plattformen von WebSphere MQ und auf z/OS-Systemen von RRS bereitgestellt. Nachrichtenflüsse werden unter z/OS immer global koordiniert, unabhängig davon, ob die Eigenschaft Coordinated (Koordiniert) des Nachrichtenflusses aktiviert oder inaktiviert ist.

Nicht koordinierte Nachrichtenflüsse

Bei nicht koordinierten Nachrichtenflüssen wurde die Eigenschaft Coordinated (Koordiniert) nicht festgelegt. Aktualisierungen an Ressourcen, die von einem nicht koordinierten Nachrichtenfluss verwendet werden, werden von den verschiedenen Ressourcenmanagern verwaltet. Einige Ressourcenmanager (z. B. von WebSphere MQSeries) ermöglichen nicht transaktionsorientierte Aktualisierungen oder Aktualisierungen als Teil einer ressourcenspezifischen Transaktion. Andere Ressourcenmanager, wie beispielsweise Datenbankmanager, verwenden immer eine ressourcenspezifische Transaktion. Eine ressourcenspezifische Transaktion beschränkt sich auf Ressourcen, die einem einzelnen Ressourcenmanager zugeordnet sind, beispielsweise einen Datenbank- oder Warteschlangenmanager.

Ressourcenspezifische Transaktionen werden normalerweise nur dann verwendet, wenn in einem Nachrichtenfluss nur ein Typ einer wiederherstellbaren Ressource verwendet wird. (Ein Beispiel dafür ist ein Nachrichtenfluss, der einen MQEmpfangsknoten und einen MQSendeknoten enthält, der jedoch nicht auf Datenbanken zugreift.) Ressourcenspezifische Transaktionen sollten nicht verwendet werden, wenn mehrere Ressourcen verwendet werden und die Datenintegrität verwaltet werden muss.

Aktualisierungen einer Ressource, auf die nicht transaktionsorientiert zugegriffen wird, werden sofort festgeschrieben. Durch einen MQEmpfangsknoten, der als nicht transaktionsorientierter Knoten konfiguriert wurde, werden Nachrichten sofort aus der Warteschlange entfernt, und die Nachrichten gehen beim Fehlschlagen des Nachrichtenflusses verloren.

Je nach der Persistenz der Eingabenachricht können einige Empfangsknoten (z. B. MQEmpfangsknoten, oder SCADAEmpfangsknoten) Teil einer Transaktion sein, indem für den Transaktionsmodus Automatisch festgelegt wird. Nachrichten werden Teil der Transaktion, und der Nachrichtenfluss wird bei einer persistenten Eingabenachricht als transaktionsorientiert bzw. bei einer nicht persistenten Eingabenachricht als nicht transaktionsorientiert gekennzeichnet.

Das Beispielprogramm 'Error Handler' veranschaulicht den Einsatz von global koordinierten Transaktionen und zeigt, wie der Nachrichtenfluss jeweils anders reagiert, je nachdem, ob die Datenbankaktualisierungen koordiniert werden (Hauptnachrichtenfluss) oder nicht (Fehlernachrichtenfluss).

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Zugehörige Tasks
Nachrichtenflüsse erstellen
Nachrichtenflussinhalte definieren
Koordinierte Nachrichtenflüsse konfigurieren
Fehler in Nachrichtenflüssen behandeln
Zugehörige Verweise
Integrierte Knoten
Datenbankverbindungen für koordinierte Nachrichtenflüsse
Datenbankunterstützung für koordinierte Nachrichtenflüsse
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac00645_