MQEmpfangsknoten-Fehlerbehebung

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 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

Wiederholungsverarbeitung

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.

  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. Wurde der Rücksetzungsschwellenwert nicht erreicht, ruft der Knoten die Nachricht erneut von der Warteschlange ab. Falls dabei ein Fehler auftritt, wird dieser als interner Fehler gehandhabt (siehe oben). Bei erfolgreichem Abruf gibt der Knoten die Nachricht an den Ausgabenachrichtenfluss weiter.
  3. Wenn der Rücksetzungsschwellenwert erreicht wurde:
    • 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 beim Namen für die Rücksetzungswarteschlange (Warteschlangenattribut BOQNAME) der Eingabewarteschlange eingereiht, wenn eine definiert ist.
      2. Falls die Rücksetzungswarteschlange nicht definiert ist oder vom Knoten nicht identifiziert werden kann, wird die Nachricht in die Warteschlange für nicht zustellbare Post (DLQ) eingereiht, wenn eine definiert ist. (Wenn der Warteschlangenmanager des Brokers mit dem Befehl mqsicreatebroker definiert wurde, wurde eine DLQ mit dem Standardnamen 'SYSTEM.DEAD.LETTER.QUEUE' definiert und wird für diesen Warteschlangenmanager aktiviert.)
      3. Falls die Nachricht - aufgrund eines MQPUT-Fehlers (einschließlich bei einer nicht existierenden Warteschlange) oder weil sie nicht vom Knoten identifiziert werden - bei keiner dieser beiden Warteschlangen eingereiht werden kann, kann sie nicht ohne die Gefahr des Verlusts sicher gehandhabt werden.

        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.

  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

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 auf eine bestimmte Weise diese Situation reagiert wird, müssen Sie eine zusätzliche Fehlerbehandlung innerhalb von 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. Dies würde sicherstellen, dass die gesamte Nachrichtengruppe zurückgestellt und erst verarbeitet wird, wenn alle Nachrichten erfolgreich waren.

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