Der MQEmpfangsknoten nimmt die folgenden Maßnahmen vor, wenn er Fehler mit persistenten und transaktionsorientierten Nachrichten handhabt. Fehler mit nicht transaktionsorientierten Nachrichten werden wie unter Fehler im Empfangsknoten verwalten beschrieben gehandhabt.
Diese Aktion wird in der unten stehenden Tabelle zusammengefasst:
Fehlerereignis | Angeschlossenes Fehlerterminal | Nicht angeschlossenes Fehlerterminal | Angeschlossenes Catch-Terminal | Nicht angeschlossenes Catch-Terminal |
---|---|---|---|---|
Knoten erkennt internen Fehler | Der mit dem Fehlerterminal verbundene Nachrichtenfluss handhabt den Fehler | Nachricht wird in alternative Warteschlange eingereiht; Knoten versucht es erneut, wenn die Einreihung fehlschlägt | nicht zutreffend | nicht zutreffend |
Knoten gibt Nachricht zum Ausgangsterminal weiter, Ausnahmebedingung tritt im Ausgabenachrichtenfluss auf | nicht zutreffend | nicht zutreffend | Der mit dem Catch-Terminal verbundene Nachrichtenfluss handhabt den Fehler | Knoten versucht es erneut |
Knoten gibt Nachricht zum Catch-Terminal weiter, Ausnahmebedingung tritt im Nachrichtenfluss auf, der mit dem Catch-Terminal verbunden ist | Fehler wird im Protokoll aufgezeichnet; Nachricht wird zurückgegeben | Fehler wird im Protokoll aufgezeichnet; Nachricht wird zurückgegeben | nicht zutreffend | nicht zutreffend |
Knoten gibt Nachricht zum Fehlerterminal weiter, Ausnahmebedingung tritt im Nachrichtenfluss auf, der mit dem Fehlerterminal verbunden ist | nicht zutreffend | nicht zutreffend | Knoten versucht es erneut | Knoten versucht es erneut |
Der Knoten versucht eine Wiederholungsverarbeitung, wenn eine Nachricht zur Eingabewarteschlange zurückgegeben wird. Er prüft, ob die Nachricht zuvor bereits zurückgesetzt wurde, und wenn dies der Fall ist, ob die Rücksetzungsanzahl den Rücksetzungsschwellenwert erreicht hat. Die Rücksetzungsanzahl für jede Nachricht wird von WebSphere MQ im MQMD verwaltet.
Das Attribut BOTHRESH des Rücksetzungsschwellenwerts wird angegeben (oder die Erlaubnis zum standardmäßigen Annehmen des Werts 0 erteilt), wenn Sie die Warteschlange erstellen. Akzeptieren Sie den Standardwert 0, erhöht der Knoten diesen auf 1. Der Knoten setzt den Wert ebenfalls auf 1, wenn er den aktuellen Wert nicht erkennen kann. Das bedeutet, dass wenn eine Nachricht noch nicht zurückgesetzt wurde, diese zurückgesetzt und mindestens einmal wiederholt wird.
Wenn nach dem Fehlerterminal ein Fehler auftritt, werden weitere Versuche unternommen, bis das Rücksetzungszählerfeld im MQMD zweimal den Rücksetzungsschwellenwert erreicht, der für die Eingabewarteschlange eingestellt ist. Sobald dieser Grenzwert erreicht wird, versucht der Knoten, die Nachricht in einer anderen Warteschlange einzureihen.
Die Nachricht kann nicht verworfen werden; aus diesem Grund versucht der Nachrichtenfluss weiterhin, die Nachricht zurückzustellen. Er erfasst die Fehlersituation, indem Fehler im lokalen Fehlerprotokoll eingetragen werden. Eine zweite Indikation dieses Fehlers ist die kontinuierliche Erhöhung der Rückstellungszahl der Nachricht in der Eingabewarteschlange.
Falls es zu dieser Situation kommt, weil keine Warteschlange existiert, können Sie eine der oben erwähnten Rücksetzungswarteschlangen definieren. Wenn die Bedingung nicht mehr besteht, die verhindert, dass die Nachricht verarbeitet wird, können Sie zeitweise den Wert des Attributs BOTHRESH erhöhen. Dies erzwingt die normale Verarbeitung der Nachricht.
WebSphere MQ unterstützt Nachrichtengruppen. Sie können festlegen, dass eine Nachricht zu einer Gruppe gehört; ihre Verarbeitung wird dann mit Bezug auf die anderen Nachrichten dieser Gruppe fertiggestellt (d. h. es werden entweder alle Nachrichten festgeschrieben oder alle Nachrichten zurückgestellt). Wenn Sie einem Broker gruppierte Nachrichten senden, wird diese Bedingung beibehalten, wenn Sie den Nachrichtenfluss korrekt konfiguriert haben und während der Gruppennachrichtverarbeitung keine Fehler auftreten.
Um den Nachrichtenfluss für die korrekte Handhabung gruppierter Nachrichten zu konfigurieren, befolgen Sie die unter MQEmpfangsknoten beschriebenen Maßnahmen. Es kann jedoch keine korrekte Verarbeitung der Nachrichtengruppe gewährleistet werden, falls ein Fehler während der Verarbeitung einer dieser Nachrichten auftritt.
Wenn Sie den MQEmpfangsknoten wie beschrieben konfiguriert haben, werden normalerweise alle Nachrichten der Gruppe in einer einzigen Arbeitseinheit verarbeitet, die festgeschrieben wird, sobald die letzte Nachricht der Gruppe erfolgreich verarbeitet wurde. Falls jedoch ein Fehler auftritt, bevor die letzte Nachricht der Gruppe verarbeitet wurde, unterliegt die Arbeitseinheit, welche die Nachrichten einschließlich der Fehler erzeugenden Nachricht enthält, der Fehlerbehandlung, was zur Zurückstellung der Arbeitseinheit führen kann.
Es kann jedoch jede der restlichen Nachrichten der Gruppe erfolgreich vom Nachrichtenfluss gelesen und verarbeitet und aus diesem Grund in einer neuen Arbeitseinheit gehandhabt und festgeschrieben werden. Wenn die letzte Nachricht aufgenommen und verarbeitet wurde, wird eine COMMIT-Operation ausgegeben. Falls in einer Gruppe ein Fehler auftritt, aber nicht bei der ersten oder letzten Nachricht, ist es deshalb möglich, dass ein Teil der Gruppe zurückgesetzt und ein anderer Teil festgeschrieben wird.
Erfordern die Nachrichtenverarbeitungsbedingungen, dass diese Situation auf eine bestimmte Weise gehandhabt wird, müssen Sie eine zusätzliche Fehlerbehandlung innerhalb von Nachrichtengruppen bereitstellen. Beispiel: Sie könnten den Fehler der Nachrichtengruppe innerhalb einer Datenbank aufzeichnen, eine Überprüfung der Datenbank beim Abfragen jeder Nachricht einbeziehen und somit eine Zurücksetzung erzwingen, wenn die aktuelle Gruppe bereits auf einen Fehler gestoßen ist. Dies würde sicherstellen, dass die gesamte Nachrichtengruppe zurückgestellt und erst verarbeitet wird, wenn alle Nachrichten erfolgreich waren.