WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Fehler in Nachrichtenflüssen behandeln

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.

Sie können beispielsweise einen Nachrichtenfluss entwerfen, der bestimmte Fehler erwartet, die auf eine bestimmte Weise verarbeitet werden sollen. Oder Sie erstellen einen Nachrichtenfluss, der eine Datenbank aktualisiert und diese Aktualisierungen zurücksetzen muss, wenn andere Verarbeitungen nicht erfolgreich beendet werden.

In einigen Fällen sind die Option, die Ihnen hier zur Verfügung stehen, sehr komplex. Die für MQInput-Knoten und TimeoutNotification-Knoten bereitgestellten Optionen sind sehr umfangreich, da diese Knoten mit persistenten Nachrichten und Transaktionen arbeiten. Der MQInput-Knoten wird 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.

Es gibt zwei allgemeine Methoden zur Behandlung von Fehlern in einem Nachrichtenfluss:
  • Fehlerprüfung

    Stellen Sie eine Verbindung mit dem Fehlerterminal eines Knotens her, um eine explizite Überprüfung auf Fehler, die innerhalb des Knotens auftreten, durchzuführen. Falls Fehler auftreten, wird eine Ausnahmeliste an das Fehlerterminal übergeben. Die unvollständige Nachricht bleibt in dem Zustand erhalten, in dem sie sich vor dem Aufrufen des Knotens befand.

    Sie können eine noch stärker spezialisierte Fehlerprüfung in Knoten einführen, die mithilfe von ESQL angepasst werden kann. Beispielsweise können Sie Exitverwaltungen in diesen Knoten erstellen. Weitere Informationen zum Erstellen von Exitverwaltungen mithilfe von ESQL finden Sie im Abschnitt DECLARE HANDLER-Anweisung.

  • Abfangen von Ausnahmen

    Wenn Sie keine Verbindung zu einem Fehlerterminal herstellen, wird ein Fehler im Knoten in eine Ausnahme umgewandelt, die vom Knoten ausgelöst wird. Änderungen, die vor dem Auslösen der Ausnahme an der unvollständigen Nachrichte vorgenommen wurden, werden zurückgenommen. Die Ausnahme kann bewirken, dass die aktuelle Transaktion rückgängig gemacht wird, d. h., dass alle Aktualisierungen von Transaktionsressource zurückgenommen werden.

    Sie können verhindern, dass die Transaktion rückgängig gemacht wird, und das Ausmaß steuern, bis zu dem Nachrichtenänderungen zurückgenommen werden, indem Sie einen TryCatch-Knoten in den Nachrichtenfluss einschließen. Wenn hinter dem Try-Terminal des TryCatch-Knotens eine Ausnahme ausgelöst wird, wird eine Ausnahmeliste an das Catch-Terminal des Knotens übergeben. Die unvollständige Nachricht wird in den Zustand zurückgesetzt, in dem sie sich befand, bevor sie den TryCatch-Knoten erreichte.

    Andere Knoten als der TryCatch-Knoten besitzen ein Catch-Terminal. Diese Knoten stehen üblicherweise am Anfang einer Transaktion, wo eine nicht abgefangene Ausnahem ein Rollback verursachen würde. In diesen Knoten verhält sich das Catch-Terminal so, als wäre ein TryCatch-Knoten direkt mit dem Ausgangsterminal verbunden. Verwenden Sie das Catch-Terminal zur Behandlung von Ausnahmen, die hinter dem Knoten im Nachrichtenfluss ausgelöst werden. Stellen Sie eine Verbindung zum Fehlerterminal her, um Fehler innerhalb des Knotens zu behandeln.

Sie können eine oder mehrere der folgenden Optionen in Ihren Nachrichtenflüssen auswählen:

Wenn Sie in Ihrem Nachrichtenfluss benutzerdefinierte Knoten verwenden, sollten Sie die mit dem Knoten bereitgestellten Informationen lesen, um nachvollziehen zu können, wie Fehler auf diesen Knoten behandelt werden. Die Beschreibungen in diesem Abschnitt beschäftigen sich nur mit den integrierten Knoten.

Beim Entwurf Ihres Konzeptes zur Fehlerbehandlung sollten Sie folgende Faktoren berücksichtigen:

Allgemeine Grundsätze der Fehlerbehandlung:
  • Wenn Sie eine Verbindung mit dem Catch-Terminal des Empfangsknotens herstellen, legen Sie damit fest, dass der Nachrichtenfluss alle Ausnahmen, die irgendwo im Ausgabedatenfluss generiert werden, behandelt. Der Broker führt erst dann eine ROLLBACK-Operation oder sonstige Aktion aus, wenn im Abfangdatenfluss eine Ausnahme vorliegt. Wenn Sie möchten, dass eine ROLLBACK-Operation ausgeführt wird, nachdem eine Ausnahme ausgelöst und abgefangen wurde, müssen Sie dies im Abfangdatenfluss bereitstellen.
  • Falls Sie keine Verbindung mit dem Catch-Terminal des Empfangsknotens herstellen, können Sie eine Verbindung mit dem Fehlerterminal (Failure) herstellen und einen Fehlerdatenfluss zur Behandlung von Ausnahmen, die von dem Knoten generiert werden, bereitstellen. Der Fehlerdatenfluss wird unverzüglich gestartet, sobald eine Ausnahme in dem Knoten auftritt.

    Der Fehlerdatenfluss wird auch gestartet, wenn nach dem MQInput-Knoten eine Ausnahmebedingung generiert wird (entweder im Ausgabe- oder im Abfangdatenfluss). 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 Zurücksetzungen steigen.

    Der HTTPInput-Knoten leitet die Nachricht nicht an das Fehlerterminal (Failure) weiter, wenn eine Ausnahme außerhalb des Knotens generiert wird und Sie keine Verbindung mit seinem Catch-Terminal hergestellt haben.

  • Wenn ein Knoten eine Nachricht an einen Abfangdatenfluss weiterleitet und eine andere Ausnahme auftritt, durch die die Steuerung wieder an denselben Knoten zurückgegeben wird, behandelt der Knoten die Nachricht so, als würde keine Verbindung mit dem Catch-Terminal bestehen.
  • Wenn Sie weder mit den Fehlerterminals (Failure) noch den Catch-Terminals des Empfangsknotens eine Verbindung herstellen, stellt der Broker eine Standardverarbeitung zur Verfügung (die vom jeweiligen Typ des Empfangsknotens abhängig ist).
  • Falls Sie ein umfassenderes Fehlerbehandlungs- und Wiederherstellungsverfahren benötigen, fügen Sie einen oder mehrere TryCatch-Knoten ein, um eine stärker auf lokale Anforderungen bezogene Fehlerbehandlung bereitzustellen.
  • Wenn Sie über eine allgemeine Prozedur zur Behandlung bestimmter Fehler verfügen, kann es sinnvoll sein, einen untergeordneten Datenfluss zu erstellen, der die erforderliche Knotenfolge enthält. Fügen Sie diesen untergeordneten Datenfluss immer dann ein, wenn die zugehörige Aktion ausgeführt werden soll.

Weitere Informationen finden Sie unter Verbindungen zu Fehlerterminals (Failure) herstellen, Fehler im Empfangsknoten verwalten und Ausnahmen in einem TryCatch-Knoten abfangen.

Wenn Ihre Nachrichtenflüsse Datenbankaktualisierungen einschließen, kann die Art und Weise, wie Sie die Knoten konfigurieren, die mit den betreffenden Datenbanken interagieren, die Art und Weise der Fehlerbehandlung beeinflussen:

Weitere Informationen zu koordinierten Datenbankaktualisierungen finden Sie unter Transaktionalität für Nachrichtenflüsse konfigurieren.

Bei Nachrichtenflüssen, die für die Aggregation vorgesehen sind, müssen einige Punkte beachtet werden, die nicht in diesem Abschnitt behandelt werden. Informationen zu Nachrichtenflüssen für die Aggregation finden Sie unter Handhabung von Ausnahmebedingungen in Aggregationsflüssen.

Der folgende Mustercode 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, den Sie Ihren Nachrichtenflüssen unverändert hinzufügen können. Der Mustercode veranschaulicht zudem die Konfiguration von Nachrichtenflüssen zur Steuerung von Transaktionalität; insbesondere die Verwendung global koordinierter Transaktionen zur Sicherstellung der allgemeinen Datenintegrität.

Informationen zu Beispielen können nur bei Verwendung des in das WebSphere Message Broker Toolkit integrierten bzw. online verfügbaren Information Center angezeigt werden. Muster können nur ausgeführt werden, wenn das im WebSphere Message Broker Toolkit integrierte Information Center verwendet wird.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:19:48


TaskthemaTaskthema | Version 8.0.0.5 | ac00410_