Behandlung von MQEmpfangsfehlern

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

Verarbeitung wiederholen

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.

  1. Falls der Knoten eine Nachricht nach zahlreichen fehlgeschlagenen Versuchen im ausgehenden Verarbeitungsablauf zum Ausgangsterminal weitergegeben und die Anzahl der Wiederholungen den Rücksetzungsschwellenwert erreicht hat, versucht er, die Nachricht über das Fehlerterminal weiterzugeben, falls dieses angeschlossen ist. Wenn Sie keine Verbindung zum Fehlerterminal hergestellt haben, versucht der Knoten, die Nachricht in eine andere Warteschlange einzureihen.

    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.

  2. Wenn der Schwellenwert für die Zurücksetzung noch nicht erreicht wurde, ruft der Knoten die Nachricht erneut aus der Warteschlange ab. Schlägt dies fehl, wird die Situation als interner Fehler behandelt (siehe Beschreibung oben). Ist der Vorgang erfolgreich, gibt der Knoten die Nachricht an den Ausgangsfluss weiter.
  3. Wenn der Schwellenwert für die Zurücksetzung erreicht wurde, gilt Folgendes:
    • Wenn Sie eine Verbindung zum Fehlerterminal hergestellt haben, gibt der Knoten die Nachricht an dieses Terminal weiter. Der Fehler muss im Nachrichtenfluss gehandhabt werden, der mit dem Fehlerterminal verbunden ist.
    • Wenn das Fehlerterminal nicht angeschlossen ist, versucht der Knoten, die Nachricht in einer verfügbaren Warteschlange nach Vorgabe einzureihen:
      1. Die Nachricht wird für die Eingabewarteschlange in die Warteschlange zum Wiedereinreihen zurückgesetzter Nachrichten gestellt, falls diese definiert wurde (Warteschlangenattribut BOQNAME).
      2. Wenn keine Rücksetzungswarteschlange definiert ist oder diese vom Knoten nicht erkannt wird, wird die Nachricht in die Warteschlange für nicht zustellbare Nachrichten (DLQ) gestellt, falls diese definiert ist. (Wenn der WS-Manager des Brokers über den Befehl mqsicreatebroker definiert wurde, wurde eine DLQ mit dem Standardnamen SYSTEM.DEAD.LETTER.QUEUE definiert und für diesen Warteschlangenmanager aktiviert.)
      3. Wenn die Nachricht in keine dieser Warteschlangen gestellt werden kann, da ein MQPUT-Fehler vorliegt (dazu gehört auch, wenn die Warteschlange nicht vorhanden ist), oder weil diese vom Knoten nicht erkannt werden, kann sie nicht ohne Risiko des Nachrichtenverlustes verarbeitet werden.

        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.

  4. Wenn der Rücksetzungsschwellenwert zweimal erreicht oder überschritten wurde, versucht der Knoten, die Nachricht nach Vorgabe in einer verfügbaren Warteschlange gemäß dem vorhergehenden Schritt einzureihen.

Nachrichtengruppenfehler handhaben

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.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac00414_