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 Versuchsterminal weiter. Der Broker übergibt die Steuerung an die Knotenfolge, die mit diesem Terminal verbunden ist (dem Versuchsfluss).
Wenn im Versuchsfluss 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 Abfangterminal (dem Abfangfluss) verbunden ist. Der Inhalt der weitergegebenen Nachrichtenbaumstruktur ist mit dem Inhalt identisch, der an das Versuchsterminal 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 Versuchsfluss an der Nachrichtenbaumstruktur vorgenommen wurden, sind in der Nachrichtenbaumstruktur, die an den Abfangfluss weitergegeben wird, nicht vorhanden.
Wenn der Versuchsfluss jedoch eine Verarbeitung abgeschlossen hat, die Aktualisierungen an externen Datenbanken beinhalten, gehen diese nicht verloren. Die Aktualisierungen bleiben bestehen, während die Nachricht vom Abfangfluss 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 Abfangfluss 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 Abfangterminal 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 Abfangversuchserminals ist mit einem allgemeinen untergeordneten Fehlerverarbeitungsdatenfluss verbunden.
Wenn der Empfangsknoten in Ihrem Nachrichtenfluss über kein Abfangterminal 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.