- Überprüfen Sie den Nachrichtenfluss in der Workbench.
Möglicherweise haben Sie das Fehlerterminal des MQEmpfangsknotens anstatt mit dem Ausgangsterminal mit einem nachfolgenden Knoten verbunden.
Das Ausgangsterminal ist das mittlere dieser drei Terminals. Nachrichten, die an ein nicht verbundenes Ausgangsterminal übertragen werden, werden verworfen.
- 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. Weitere Informationen finden Sie in zusätzlichen Nachrichten.
Wenn das Fehlerterminal des MQEmpfangsknotens beispielsweise mit einem
MQSendeknoten verbunden wurde, werden diese Nachrichten nicht angezeigt.
Durch die Verbindung eines Knotens mit einem Fehlerterminal eines beliebigen Knotens wird angezeigt, dass der Nachrichtenfluss für die Verarbeitung aller Fehler eingerichtet wurde. Wenn ein Fehlerterminal mit einem MQOutput-Knoten verbunden wurde, ignoriert der Nachrichtenfluss alle auftretenden Fehler.
- 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 zur Ansicht 'Brokerverwaltung'.
- Aktivieren Sie in der Domänenansicht den Nachrichtenfluss, und klicken Sie mit der rechten Maustaste auf den Fluss. (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 Trace-Einträge mit Hilfe des Befehls mqsireadlog finden. Formatieren Sie diese mit dem Befehl mqsiformatlog, 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 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 die Nachricht wieder in den Nachrichtenfluss. Durch die Tracestufe 'Debug' werden weit mehr Einzelheiten darüber erzeugt, warum die Nachricht eine bestimmte Route verwendet, und somit können Sie die Ursachen für die vom Nachrichtenfluss durchgeführte Aktion bestimmen.
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).
- Ist die Nachricht persistent oder nicht persistent (nur bei Transaktionsmodus=automatisch)? Alle Nachrichten werden als persistent behandelt, wenn der Transaktionsmodus=Ja ist, und als nicht persistent, wenn der Transaktionsmodus=Nein ist.
Allgemein:
- Wenn für einen Fehler kein Pfad definiert wurde (d. h., es besteht weder eine Verbindung zu dem Catch-Terminal noch zu dem Fehlerterminal des MQInput-Knotens), werden folgende Aktionen ausgeführt:
- Nicht transaktionsgesteuerte Nachrichten werden verworfen.
- Transaktionale Nachrichten werden zur Wiederholung in die Eingabewarteschlange zurückgesetzt.
- Wenn die Anzahl der Zurückstellungsvorgänge der Nachricht geringer ist als die Zurückstellungsschwelle (BOTHRESH) der Eingabewarteschlange, wird die Nachricht erneut ausgeführt und an das Ausgangsterminal gesendet.
- Wenn die Anzahl der Zurückstellungsvorgänge der Zurückstellungsschwelle entspricht oder diese überschreitet, wird die Nachricht in die Zurückstellungswarteschlange gestellt (gekennzeichnet durch das Attribut BOQNAME der Eingabewarteschlange), falls diese angegeben wurde, oder in die Warteschlange für nicht zustellbare Nachrichten, falls keine Zurückstellungswarteschlange angegeben wurde oder der MQPUT-Aufruf an die Zurückstellungswarteschlange fehlschlägt. Falls der MQPUT-Aufruf an die Warteschlange für nicht zustellbare Nachrichten fehlschlägt oder keine Warteschlange für nicht zustellbare Nachrichten definiert wurde, führt der Nachrichtenfluss eine Schleife aus, um die Nachricht in die Warteschlange für nicht zustellbare Nachrichten einzureihen.
- Wenn für den Fehler ein Pfad definiert wurde (wenn das Catch-Terminal und das Fehlerterminal miteinander verbunden sind, wird die Nachricht über das Catch-Terminal weitergegeben), definiert dieser Pfad die Zieladresse der Nachricht.
- Wenn von Ihrem Nachrichtenfluss in den Eigenschaften des MQInput-Knotens der Transaktionsmodus=Ja verwendet wird und die Nachrichten nicht in einer Ausgabewarteschlange angezeigt werden, müssen Sie den Pfad des Nachrichtenflusses überprüfen.
Wenn die Pfade des Nachrichtenflusses keine Fehler aufweisen, diese Pfade jedoch nicht in einer Ausgabewarteschlange (oder einer anderen persistenten Speicheradresse) enden, ist der Nachrichtenfluss nicht fehlgeschlagen, und die Nachricht wird nicht zurückgesetzt oder für eine alternative Zieladresse eingereiht (z. B. das Catch-Terminal, die Warteschlange für nicht zustellbare Nachrichten oder die Zurückstellungswarteschlange der Warteschlange).
Stellen Sie sicher, dass alle möglichen Pfade einen endgültigen Sendeknoten und nicht eine unzustellbare Position erreichen. Stellen Sie beispielsweise Folgendes sicher:
- Das UNBEKANNT-Terminal eines Filterknotens wurde mit einem anderen Knoten im Nachrichtenfluss verbunden.
- Das TRUE- und das FALSE-Terminal eines Filterknotens wurden mit einem anderen Knoten im Nachrichtenfluss verbunden.