- Überprüfen Sie Ihren Nachrichtenfluss in der Workbench.
Möglicherweise haben Sie versehentlich das Fehlerterminal des MQEmpfangsknotens anstatt des Ausgangsterminals 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 lokalen Fehlerprotokoll für den Broker nach einer Nachricht, die angibt, dass die Nachrichtenverarbeitung auf Grund von Problemen beendet wurde. Ausführlichere Informationen finden Sie in weiteren Nachrichten.
Wenn z. B. das Fehlerterminal des MQEmpfangsknotens 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 lokale Fehlerprotokoll keine Fehlernachrichten enthält, aktivieren Sie die Benutzertracefunktion für den Nachrichtenfluss.
- Wechseln Sie zur 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 jedem Knoten, den die Nachricht durchläuft, und nur von diesen Knoten, ein Benutzertraceeintrag erstellt.
Auf verteilten Plattformen können Sie die Trace-Einträge mit Hilfe des Befehls mqsireadlog finden. Formatieren Sie diese, indem Sie den Befehl mqsiformatlog verwenden, und zeigen Sie die formatierten Einträge an, um den Nachrichtenpfad über den Nachrichtenfluss zu überprüfen.
Editieren und übergeben Sie für z/OS den Job BIPJLOG 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).