Der MQEmpfangsknoten nimmt die folgenden Maßnahmen vor, wenn er Fehler mit persistenten und transaktionsorientierten Nachrichten handhabt. Fehler, die bei nicht transaktionsorientierten Nachrichten auftreten, werden wie unter Fehler im Empfangsknoten verwalten beschrieben behandelt.
Diese Aktion wird in der unten stehenden Tabelle zusammengefasst:
Fehlerereignis | Fehlerterminal verbunden | Fehlerterminal nicht verbunden | Catch-Terminal verbunden | Catch-Terminal nicht verbunden |
---|---|---|---|---|
Knoten stellt internen Fehler fest | Der mit dem Fehlerterminal verbundene Nachrichtenfluss handhabt den Fehler | Nachricht wird in alternative Warteschlange eingereiht; Knoten wiederholt den Versuch, falls Einreihung fehlschlägt | Nicht zutreffend | Nicht zutreffend |
Knoten gibt Nachricht an Ausgangsterminal weiter, im Ausgangsfluss tritt Ausnahmebedingung auf | Nicht zutreffend | Nicht zutreffend | Der mit dem Catch-Terminal verbundene Nachrichtenfluss handhabt den Fehler | Knoten wiederholt den Versuch |
Knoten gibt Nachricht zum Catch-Terminal weiter, Ausnahmebedingung tritt im Nachrichtenfluss auf, der mit dem Catch-Terminal verbunden ist | Fehler protokolliert, Nachricht zurückgesetzt | Fehler protokolliert, Nachricht zurückgesetzt | 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 wiederholt den Versuch | Knoten wiederholt den Versuch |
Der Knoten versucht eine erneute Verarbeitung, wenn eine Nachricht in die Eingabewarteschlange zurückgesetzt wird. Er prüft, ob die Nachricht zuvor zurückgesetzt wurde. Ist dies der Fall, wird geprüft, ob der Rücksetzungszähler den Schwellenwert für die Zurücksetzung erreicht hat (diesem Wert entspricht). Der Rücksetzungszähler für die einzelnen Nachrichten wird von WebSphere MQ im MQMD verwaltet.
Sie geben das Attribut BOTHRESH für den Schwellenwert der Zurücksetzung bei der Erstellung der Warteschlange an (bzw. übernehmen den Standardwert 0). Wenn Sie den Standardwert 0 übernehmen, wird dieser Wert vom Knoten auf 1 erhöht. Der Knoten setzt auch dann den Wert auf 1, wenn er den aktuellen Wert nicht feststellen kann. Dies bedeutet, dass eine noch nicht zurückgesetzte Nachricht zurückgesetzt und der Versuch 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.
Da die Nachricht nicht gelöscht werden kann, versucht der Nachrichtenfluss weiterhin, die Nachricht zurückzusetzen. Er zeichnet die Fehlersituation auf, indem er Fehler in das lokale Fehlerprotokoll schreibt. Ein zweiter Hinweis auf diesen Fehler ist die kontinuierliche Erhöhung des Rücksetzungszählers der Nachricht in der Eingabewarteschlange.
Wenn diese Situation eingetreten ist, weil keine der Warteschlangen vorhanden ist, können Sie eine der oben erwähnten Rücksetzungswarteschlangen definieren. Wenn der Zustand, auf Grund dessen die Nachricht nicht verarbeitet werden kann, nicht mehr besteht, können Sie vorübergehend den Wert des Attributs BOTHRESH erhöhen. Auf diese Weise wird die normale Verarbeitung der Nachricht erzwungen.
Von WebSphere MQ werden Nachrichtengruppen unterstützt. Sie können angeben, dass eine Nachricht einer Gruppe angehört. In diesem Fall wird ihre Verarbeitung unter Bezugnahme auf die anderen Nachrichten in der Gruppe abgeschlossen (d. h., entweder alle Nachrichten werden festgeschrieben, oder alle Nachrichten werden zurückgesetzt). Wenn Sie gruppierte Nachrichten an einen Broker senden, bleibt diese Bedingung bestehen, wenn Sie den Nachrichtenfluss korrekt konfiguriert haben. Während der Verarbeitung von Gruppennachrichten treten keine Fehler auf.
Um den Nachrichtenfluss für die korrekte Handhabung gruppierter Nachrichten zu konfigurieren, befolgen Sie die unter MQEmpfangsknoten beschriebenen Maßnahmen. Die korrekte Verarbeitung der Nachrichtengruppe kann jedoch nicht garantiert werden, wenn während der Verarbeitung einer der Nachrichten ein Fehler auftritt.
Wenn Sie den MQEmpfangsknoten wie beschrieben konfiguriert haben, werden unter normalen Umständen alle Nachrichten in der Gruppe in einer einzigen Arbeitseinheit verarbeitet, die festgeschrieben wird, sobald die letzte Nachricht in der Gruppe erfolgreich verarbeitet wurde. Wenn jedoch vor der Verarbeitung der letzten Nachricht in der Gruppe ein Fehler auftritt, unterliegt die Arbeitseinheit, die die Nachrichten bis hin zu und einschließlich der Nachricht enthält, die den Fehler generiert hat, der Fehlerbehandlung, die von den hier dokumentierten Regeln definiert wurde. Dies kann bedeuten, dass die Arbeitseinheit zurückgesetzt wird.
Die übrigen Nachrichten in der Gruppe können jedoch möglicherweise vom Nachrichtenfluss erfolgreich gelesen und verarbeitet werden. Aus diesem Grund werden sie in einer neuen Arbeitseinheit verarbeitet und festgeschrieben. Sobald die letzte Nachricht festgestellt und verarbeitet wird, wird eine Festschreibung ausgeführt. Wenn also in einer Gruppe ein Fehler auftritt, der nicht die erste oder letzte Nachricht betrifft, ist es möglich, dass ein Teil der Gruppe zurückgesetzt und ein anderer Teil festgeschrieben wird.
Wenn die Anforderungen Ihrer Nachrichtenverarbeitung verlangen, dass diese Situation in einer bestimmten Weise gehandhabt wird, müssen Sie eine zusätzliche Fehlerbehandlung zur Verarbeitung von Fehlern in Nachrichtengruppen bereitstellen. Sie könnten beispielsweise das Fehlschlagen der Nachrichtengruppe innerhalb einer Datenbank aufzeichnen und beim Abruf der einzelnen Nachrichten eine Prüfung in die Datenbank integrieren. Auf diese Weise würde eine Rücksetzung erzwungen, wenn die aktuelle Gruppe bereits einen Fehler festgestellt hat. Dadurch könnte sichergestellt werden, dass die gesamte Nachrichtengruppe zurückgesetzt und nur verarbeitet wird, wenn alle Nachrichten erfolgreich sind.