Sie können einen Nachrichtenfluss entwerfen, um Ausnahmen abzufangen, bevor sie an den Empfangsknoten geliefert werden. In einen einzelnen Nachrichtenfluss können Sie einen oder mehrere Versuchs-/Abfangknoten 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 Versuchs-/Abfangknoten verarbeitet eine Nachricht nicht, sondern ist nur einen Entscheidungspunkt in einem Nachrichtenfluss. Wenn der Versuchs-/Abfangknoten eine Nachricht empfängt, leitet er diese an das Try-Terminal weiter. Der Broker übergibt die Steuerung an die Knotenfolge, die mit diesem Terminal verbunden ist (dem Try-Fluss).
Wenn im Try-Fluss eine Ausnahmebedingung ausgegeben wird, gibt der Broker die Steuerung wieder an den Versuchs-/Abfangknoten zurück. Der Knoten schreibt den aktuellen Inhalt der Ausnahmeliste (ExceptionList) in das lokale Fehlerprotokoll und anschließend die Informationen zu der aktuellen Ausnahme in die Ausnahmeliste, wobei die dort gespeicherten Informationen überschrieben werden.
Der Knoten leitet jetzt die Nachricht an die Knotenfolge weiter, die mit dem Catch-Terminal (dem Catch-Fluss) verbunden ist. 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 Versuchs-/Abfangknoten empfangen wurde. Der Knoten erweitert die Baumstruktur um die neuen Ausnahmeinformationen, die er in die Ausnahmeliste geschrieben hat. Alle Änderungen oder Zusätze, die von den Knoten im Try-Fluss an der Nachrichtenbaumstruktur vorgenommen wurden, sind in der Nachrichtenbaumstruktur, die an den Catch-Fluss weitergegeben wird, nicht vorhanden.
Wenn der Try-Fluss jedoch eine Verarbeitung abgeschlossen hat, die Aktualisierungen an externen Datenbanken beinhalten, gehen diese nicht verloren. Die Aktualisierungen bleiben bestehen, während die Nachricht vom Catch-Fluss verarbeitet wird, und die Entscheidung darüber, ob die Aktualisierungen festgeschrieben oder zurückgesetzt werden, wird in der Konfiguration Ihres Nachrichtenflusses und der einzelnen Knoten getroffen, die mit den Datenbanken interagieren. Wenn die Aktualisierungen auf Grund der von Ihnen festgelegten Konfiguration festgeschrieben werden, müssen Sie eine Logik in Ihren Catch-Fluss aufnehmen, die die vorgenommenen Änderungen zurücksetzt.
Der Abschnitt Nachrichtenflusstransaktionen konfigurieren enthält eine Erläuterung der Konfigurationsoptionen.
Der Broker gibt die Steuerung in folgenden Fällen an den nächsten Abfangpunkt im Nachrichtenfluss zurück (wobei es sich um einen anderen Versuchs-/Abfangknoten handeln kann, aber letztendlich immer um den Empfangsknoten):
Das folgende Beispiel zeigt, wie Sie den Datenfluss konfigurieren können, um Ausnahmen im Empfangsknoten abzufangen. Das Catch-Terminal des MQEmpfangsknotens ist mit einem Traceknoten verbunden, um den Fehler aufzuzeichnen.
Im folgenden Beispiel enthält der Nachrichtenfluss zwei separate Verarbeitungsdatenflüsse, die mit den TRUE- und FALSE-Terminals des Filterknotens verbunden sind. In jeder der beiden Routen, die die Nachricht nehmen kann, befindet sich ein Versuchs-/Abfangknoten. Das Abfangterminal von beiden TryCatch-Terminals ist mit einem allgemeinen untergeordneten Fehlerverarbeitungsdatenfluss verbunden.
Wenn der Empfangsknoten in Ihrem Nachrichtenfluss über kein Catch-Terminal verfügt (beispielsweise den Echtzeitempfangsknoten) und Sie Fehler im Fluss verarbeiten möchten, müssen Sie einen Versuchs-/Abfangknoten einfügen. Das folgende Beispiel zeigt, wie Sie eine Verbindung mit einem Datenfluss herstellen können, um diese Fehlerbearbeitung bereitzustellen. In diesem Beispiel könnten Sie die ESQL im Rechenknoten des Abfangdatenflusses konfigurieren, um die abgefangene Ausnahme auszuwerten und den Namen der Ausgabewarteschlange dynamisch festzulegen.