Der Broker stellt eine allgemeine Fehlerbehandlung für alle Nachrichtenflüsse zur Verfügung. Falls diese allgemeine Verarbeitung nicht ausreicht und Sie auf bestimmte Fehlerbedingungen und -situationen mit besonderen Aktionen reagieren möchten, können Sie Ihre Nachrichtenflüsse um eine eigene Fehlerbehandlung erweitern.
Die zu diesem Zweck verwendbaren Optionen können in einigen Fällen sehr komplex sein. Die für MQEmpfangsknoten bereitgestellten Optionen sind sehr umfangreich, da diese Knoten mit persistenten Nachrichten und Transaktionen arbeiten. MQEmpfangsknoten werden außerdem von den Konfigurationsoptionen für WebSphere MQ beeinflusst.
Da Sie selbst entscheiden können, wie Sie verschiedene Fehler behandeln wollen, gibt es keine festen Prozeduren, die beschrieben werden könnten. Dieser Abschnitt enthält grundsätzliche Informationen zur Fehlerbehandlung und beschreibt die verfügbaren Optionen. Sie müssen auf Basis der in diesem Abschnitt aufgeführten Details entscheiden, welche der auswählbaren Kombinationen Sie in der jeweiligen Situation benötigen.
Sie können sich in Ihren Nachrichtenflüssen für eine oder mehrere der folgenden Optionen entscheiden:
Wenn Sie benutzerspezifische Knoten in Ihren Nachrichtenfluss einschließen, müssen Sie die mit dem Knoten bereitgestellten Informationen beachten, damit Sie wissen, wie Sie Fehler in Verbindung mit solchen Knoten behandeln können. Die Beschreibungen in diesem Abschnitt beschäftigen sich nur mit den integrierten Knoten.
Wenn Sie ein eigenes Fehlerbehandlungsverfahren entwerfen, beachten Sie die folgenden Faktoren:
Wenn in einem Knoten eine Ausnahme erkannt wird, werden die Nachricht und die Ausnahmeinformationen an das Fehlerterminal des Knotens übergeben. Falls der Knoten kein Fehlerterminal besitzt oder keine Verbindung mit dem Fehlerterminal besteht, löst der Broker eine Ausnahme aus und gibt die Steuerung an Empfangsknoten handeln.
Wenn ein MQEmpfangsknoten einen internen Fehler entdeckt, verhält er sich etwas anders. Bei einem nicht verbundenen Fehlerterminal versucht er, die Nachricht in die Warteschlange zum Wiedereinreihen zurückgesetzter Nachrichten der Eingabewarteschlange zu stellen oder (falls diese nicht definiert ist) in die Warteschlange für nicht zustellbare Post des Warteschlangenmanagers des Brokers.
Eine Nachricht wird nur dann an ein Abfangterminal weitergeleitet, wenn sie vorher an ein Ziel außerhalb des Knotens weitergeleitet wurde (z. B. an die Knoten, die mit dem Ausgangsterminal verbunden sind).
Allgemeine Grundsätze der Fehlerbehandlung:
Der Fehlernachrichtenfluss wird auch aufgerufen, wenn eine Ausnahmebedingung in der Folge nach dem MQEmpfangsknoten (entweder im Ausgabe- oder im Catch-Nachrichtenfluss). Es handelt sich um eine transaktionsorientierte Nachricht, und das Zurückstellen der Nachricht in der Eingabewarteschlange lässt den Rücksetzungszähler auf den Grenzwert für die ROLLBACK-Operation steigen.
Der SCADAEmpfangsknoten (SCADAInput) leitet die Nachricht nicht an das Fehlerterminal weiter, wenn eine Ausnahme außerhalb des Knotens generiert wird und Sie keine Verbindung mit seinem Abfangterminal hergestellt haben.
Das Beispielprogramm 'Error Handler' veranschaulicht die Verwendung einer Fehlerbehandlungsroutine zum Erfassen von Fehlerinformationen und Speichern der Informationen in einer Datenbank. Bei der Fehlerbehandlungsroutine handelt es sich um einen untergeordneten Nachrichtenfluss, der unverändert jedem beliebigen Nachrichtenfluss zugeordnet werden kann. Das Beispielprogramm veranschaulicht zudem die Konfiguration von Nachrichtenflüssen zur Steuerung von Transaktionalität; insbesondere die Verwendung global koordinierter Transaktionen zur Sicherstellung der allgemeinen Datenintegrität.