- Überprüfen Sie Ihren Nachrichtenfluss in der Workbench.
Möglicherweise haben Sie das Fehlerterminal des MQEmpfangsknotens anstatt mit dem Ausgangsterminal mit einem nachfolgenden Knoten verbunden.
Bei dem Ausgangsterminal handelt es sich um das mittlere Terminal der drei Terminals. Nachrichten, die an ein nicht verbundenes Ausgangsterminal übertragen werden, werden gelöscht.
- Wenn das Ausgangsterminal des MQEmpfangsknotens richtig mit einem nachfolgenden Knoten verbunden ist, suchen Sie im lokales
Fehlerprotokoll des Brokers nach einer Nachricht, die angibt, dass die Nachrichtenverarbeitung auf Grund von Problemen beendet wurde. Ausführlichere Informationen finden Sie in weiteren Nachrichten.
Wenn das Fehlerterminal des MQEmpfangsknotens beispielsweise mit einem
MQSendeknoten verbunden wurde, werden diese Nachrichten nicht angezeigt.
Wenn ein Knoten mit einem Fehlerterminal eines Knotens verbunden wird, bedeutet dies, dass der Nachrichtenfluss für die gesamte Fehlerverarbeitung zuständig sein soll.
Wenn Sie ein Fehlerterminal mit einem MQSendeknoten verbinden, ignoriert Ihr Nachrichtenfluss alle Fehler, die auftreten.
- Wenn das Ausgangsterminal des MQEmpfangsknotens richtig mit einem nachfolgenden Knoten verbunden ist und das lokales
Fehlerprotokoll keine Fehlernachrichten enthält, aktivieren Sie die Benutzertracefunktion für den Nachrichtenfluss.
- Wechseln Sie in die Ansicht 'Brokerverwaltung'.
- Wählen Sie in der Domänenansicht den Nachrichtenfluss aus, und klicken Sie mit der rechten Maustaste. (Unter Umständen müssen Sie die Ansicht aktualisieren, indem Sie auf das Symbol Aktualisieren klicken.)
- Klicken Sie auf .
Durch diese Aktion wird von allen Knoten, die die Nachricht durchläuft, und nur von diesen Knoten, ein Benutzertraceeintrag erstellt.
Auf verteilten Systemen können Sie die Traceeinträge mit Hilfe des Befehls mqsireadlog abrufen, sie mit dem Befehl
mqsiformatlog formatieren und die formatierten Einträge anzeigen, um den Pfad der Nachricht durch den Nachrichtenfluss zu überprüfen.
Editieren und übergeben Sie unter z/OS den BIPJLOG-Job unter COMPONENTPDS, um die Befehle mqsireadlog und mqsiformatlog zur Verarbeitung von Traces auszuführen.
- Wenn im Benutzertrace angezeigt wird, dass die Nachricht nicht den erwarteten Pfad durch den Nachrichtenfluss nimmt, erhöhen Sie die Benutzertracestufe auf
'Debug', indem Sie den Nachrichtenfluss auswählen, mit der rechten Maustaste darauf klicken und auf klicken.
Senden Sie Ihre Nachricht erneut in den Nachrichtenfluss. Bei der Tracestufe 'Debug' werden viel ausführlichere Informationen dazu generiert, warum die Nachricht die jeweilige Route nimmt, und Sie können die Ursachen für die Aktionen bestimmen, die vom Nachrichtenfluss ausgeführt werden.
Vergessen Sie nicht, die Tracefunktion zu inaktivieren, wenn Sie das Problem gelöst haben, ansonsten wird die Leistung dadurch beeinträchtigt.
- Wenn der mqput-Befehl für die Ausgabewarteschlange auf dem MQSendeknoten nicht erfolgreich ist (z. B. wenn die Warteschlange voll oder die Einreihung inaktiviert ist), hängt der Zielort einer Nachricht davon ab:
- Ob das Fehlerterminal des MQSendeknotens verbunden ist.
- Ob die Nachricht transaktionsorientiert verarbeitet wird (was jeweils von der Transaktionsmoduseinstellung des MQEmpfangsknotens, des MQSendeknotens und der Eingabe- und Ausgabewarteschlangen abhängt).
- Ob die Nachricht persistent oder nicht persistent ist (nur Transaktionsmodus=Automatisch). Alle Nachrichten werden als persistent behandelt, wenn der Transaktionsmodus=Ja ist, und als nicht persistent, wenn der Transaktionsmodus=Nein ist.
Im Allgemeinen gilt:
- Wenn ein Pfad für einen Fehler nicht definiert ist (d. h. weder das Catch-Terminal noch das Fehlerterminal des MQEmpfangsknotens ist verbunden), geschieht Folgendes:
- Nicht transaktionsorientierte Nachrichten gelöscht.
- Transaktionsorientierte Nachrichten werden zur Wiederholung in die Eingabewarteschlange zurückgesetzt.
- Wenn der Rücksetzungszähler der Nachricht geringer als der Rücksetzungsschwellenwert (BOTHRESH) der Eingabewarteschlange ist, wird die Nachricht wiederholt und erneut an das Ausgangsterminal gesendet.
- Wenn der Rücksetzungszähler größer-gleich dem Rücksetzungsschwellenwert ist, wird die Nachricht, falls angegeben, in die Rücksetzungswarteschlange (durch das Attribut BOQNAME der Eingabewarteschlange angegeben) eingereiht oder in die Warteschlange für nicht zustellbare Nachrichten, wenn keine Rücksetzungswarteschlange definiert ist oder MQPUT für die Rücksetzungswarteschlange fehlschlägt. Wenn MQPUT für die Warteschlange für nicht zustellbare Nachrichten fehlschlägt oder keine Warteschlange für nicht zustellbare Nachrichten definiert ist, bewegt sich der Nachrichtenfluss kontinuierlich in einer Schleife, während er versucht, die Nachricht in die Warteschlange für nicht zustellbare Nachrichten einzureihen.
- Wenn ein Pfad für den Fehler definiert ist (wenn sowohl Catch-Terminal als auch Fehlerterminal verbunden sind, wird die Nachricht über das Catch-Terminal weitergegeben), definiert dieser Pfad das Ziel der Nachricht.
- Wenn Ihr Nachrichtenfluss in den Eigenschaften des MQEmpfangsknotens die Einstellung 'Transaktionsmodus=Ja' verwendet und die Nachrichten nicht in einer Ausgabewarteschlange erscheinen, überprüfen Sie den Pfad des Nachrichtenflusses.
Wenn der Nachrichtenfluss Pfade enthält, die keine Fehler sind, die jedoch auch nicht in einer Ausgabewarteschlange (oder einem anderen persistenten Speicher) enden, ist der Nachrichtenfluss nicht fehlgeschlagen, und die Nachricht wird nicht zurückgesetzt oder in ein alternatives Ziel eingereiht (z. B. das Catch-Terminal, die Warteschlange für nicht zustellbare Nachrichten oder die Rücksetzungswarteschlange der Warteschlange).
Stellen Sie sicher, dass alle möglichen Pfade einen abschließenden Sendeknoten erreichen und nicht in einer Sackgasse enden.
Überprüfen Sie z. B. Folgendes:
- Sie haben das UNBEKANNT-Terminal eines Filterknotens mit einem anderen Knoten im Nachrichtenfluss verbunden.
- Sie haben das TRUE- und das FALSE-Terminal eines Filterknotens mit einem anderen Knoten im Nachrichtenfluss verbunden.