Der Broker stellt eine einfache Fehlerbehandlung für alle Nachrichtenflüsse bereit. Wenn diese einfache Verarbeitung nicht ausreichend ist und Sie bestimmte Aktionen als Antwort auf bestimmte Fehlerbedingungen und Situationen ausführen möchten, können Sie Ihre Nachrichtenflüsse mit Ihrer eigenen Fehlerbehandlung erweitern.
In einigen Fällen sind die Option, die Ihnen hier zur Verfügung stehen, sehr komplex. 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 verschiedene Fehler auf unterschiedliche Arten handhaben können, gibt es hierfür keine vorgeschriebenen Prozeduren. In diesem Abschnitt werden die Fehlerbehandlung und die zur Verfügung stehenden Optionen grundsätzlich beschrieben. Sie müssen sich aufgrund dieser Informationen entscheiden, welche Kombination der Auswahlmöglichkeiten für Sie in den einzelnen Situationen am passendsten ist.
Sie können eine oder mehrere der folgenden Optionen in Ihren Nachrichtenflüssen auswählen:
Falls Sie benutzerdefinierte Knoten in Ihrem Nachrichtenfluss einschließen, müssen Sie die vom Knoten bereitgestellten Informationen lesen, um nachvollziehen zu können, wie Fehler auf diesen Knoten behandelt werden. Die Beschreibungen dieses Kapitels beschränken sich auf integrierte Knoten.
Beim Entwurf Ihres Konzeptes zur Fehlerbehandlung sollten Sie folgende Faktoren berücksichtigen:
Wird in einem Knoten eine Ausnahmebedingung entdeckt, werden die Informationen der Nachricht und der Ausnahmebedingung an den Fehlerterminal des Knotens weitergeleitet. Wenn der Knoten keinen Fehlerterminal hat oder nicht verbunden ist, löst der Broker eine Ausnahmebedingung aus und gibt die Steuerung an den Empfangsknoten sein.
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 zum Catch-Terminal weitergegeben, wenn sie zunächst vom Knoten in der Folge weitergegeben wurde (z. B. an die mit dem Ausgangsterminal verbundenen Knoten).
Die Prinzipien der Fehlerbehandlung sind wie folgt:
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.
Wenn eine Ausnahmebedingung nach dem Knoten generiert wurde und das zugehörige Catch-Terminal nicht verbunden ist, gibt der SCADAEmpfangsknoten die Nachricht nicht an das Fehlerterminal weiter.
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.