Sie können einen Nachrichtenfluss entwerfen, um Ausnahmen abzufangen, bevor sie an den Empfangsknoten geliefert werden. In einem Nachrichtenfluss können Sie einen oder mehrere TryCatch-Knoten einfügen, um einen zentralen Fehlerpunkt (Single Point of Failure) für eine Knotenfolge zur Verfügung zu stellen. Auf diese Weise können Sie eine sehr spezifische Fehlerbearbeitung und -behebung bereitstellen.
Ein TryCatch-Knoten verarbeitet eine Nachricht nicht, sondern ist nur ein Entscheidungspunkt in einem Nachrichtenfluss. Wenn der TryCatch-Knoten eine Nachricht empfängt, gibt er sie an das Try-Terminal weiter. Der Broker übergibt die Steuerung an die Knotenfolge, die mit diesem Terminal verbunden ist (d. h. an den Try-Datenfluss).
Wenn im Try-Datenfluss eine Ausnahme ausgelöst wird, gibt der Broker die Steuerung an den TryCatch-Knoten zurück. Der Knoten schreibt den aktuellen Inhalt der Baumstruktur für Ausnahmelisten in das lokale Fehlerprotokoll und anschließend die Informationen zu der aktuellen Ausnahme in die Baumstruktur für Ausnahmelisten, wobei die dort gespeicherten Informationen überschrieben werden.
Der Knoten gibt die Nachricht an die Knotenfolge weiter, die mit dem Catch-Terminal verbunden ist (d. h. an den Abfangdatenfluss). Der Inhalt der weitergegebenen Nachrichtenbaumstruktur ist mit dem Inhalt identisch, der an das Try-Terminal weitergegeben wurde. Dabei handelt es sich um den Inhalt, den die Baumstruktur hatte, als sie zuerst vom TryCatch-Knoten empfangen wurde. Der Knoten erweitert die Nachrichtenbaumstruktur um die neuen Ausnahmeinformationen, die er in die Baumstruktur für Ausnahmelisten geschrieben hat. Änderungen oder Hinzufügungen, die die Knoten im Try-Datenfluss vorgenommen haben, sind in der Nachrichtenbaumstruktur, die an den Abfangdatenfluss übergeben wird, nicht enthalten.
Wurden durch den Try-Datenfluss allerdings auch Änderungen an externen Datenbanken vorgenommen, so gehen diese Änderungen nicht verloren. Sie bleiben während der Verarbeitung der Nachricht durch den Abfangdatenfluss erhalten und die Entscheidung, ob die Aktualisierungen festgeschrieben oder zurückgesetzt werden, wird bei der Konfiguration Ihres Nachrichtenflusses und der einzelnen Knoten, die mit den Datenbanken interagieren, getroffen. Wenn die Aktualisierungen aufgrund der von Ihnen vorgenommenen Konfiguration festgeschrieben werden, müssen Sie Ihren Abfangdatenfluss um eine Logik erweitern, mit der die durchgeführten Änderungen zurückgesetzt werden.
Der Abschnitt Transaktionalität für Nachrichtenflüsse konfigurieren enthält eine Erläuterung der Konfigurationsoptionen.
Der Broker gibt die Steuerung an den nächsten Abfangpunkt im Nachrichtenfluss zurück (wobei es sich um einen anderen TryCatch-Knoten handeln kann, aber letztendlich immer um den Empfangsknoten), wenn eine der folgenden Bedingungen zutrifft:
Das folgende Beispiel zeigt, wie Sie den Datenfluss konfigurieren können, um Ausnahmen im Empfangsknoten abzufangen. Das Catch-Terminal des MQInput-Knotens wird mit einem Trace-Knoten verbunden, um den Fehler aufzuzeichnen.
Im folgenden Beispiel enthält der Nachrichtenfluss zwei separate Verarbeitungsdatenflüsse, die mit den TRUE- und FALSE-Terminals des Filter-Knotens verbunden sind. In jeder der beiden Routen, die die Nachricht nehmen kann, befindet sich ein TryCatch-Knoten. Das Catch-Terminal von beiden TryCatch-Knoten ist mit einem allgemeinen untergeordneten Fehlerverarbeitungsdatenfluss verbunden.
Wenn der Empfangsknoten in Ihrem Nachrichtenfluss kein Catch-Terminal enthält, aber im Nachrichtenfluss Fehler bearbeitet werden sollen, müssen Sie einen TryCatch-Knoten einfügen.