Nachrichtensortierungsszenario 2

Ändern Sie die Reihenfolge der von WebSphere® MQempfangenen Nachrichten so, dass sie mit einer in einer XML-Nachricht definierten Folgenummer in der richtigen Reihenfolge weitergegeben werden.

Vorbereitungen

Lesen Sie den Konzeptabschnitt über die Nachrichtenreihenfolge.

Informationen zu dieser Task

In dieser Beispieltask beginnt die Folge laut Definition bei Folgenummer 0 (Standardeinstellung) und endet, wenn in der Gruppe 60 Sekunden lang keine neuen Nachrichten eingegangen sind. Der Nachrichtenfluss ist so konfiguriert, dass Nachrichten in der falschen Reihenfolge ankommen können, aber der Resequence -Knoten versucht, sie in der richtigen Reihenfolge weiterzugeben. Wenn eine erforderliche Nachricht in der Folge 10 Sekunden lang nicht ankommt, überspringt der Resequence -Knoten die fehlende Nachricht und gibt die nächste Nachricht in der Folge weiter, auch wenn sie jetzt nicht mehr in der richtigen Reihenfolge vorliegt.

Die folgenden Schritte zeigen, wie man einen Nachrichtenfluss erstellt, der das XML-Dokument von WebSphere MQ empfängt, die Nachrichten anhand einer Sequenznummer in einer XML-Nachricht neu ordnet (in diesem Beispiel wird $Root/XMLNSC/Doc/SeqNo der Pfad verwendet) und sie in eine Warteschlange unter IBM MQ schreibt:

Vorgehensweise

  1. Erstellen Sie einen Nachrichtenfluss namens Resequence_Task2mit einem MQInput -Knoten, einem Resequence -Knoten und einem MQOutput -Knoten.
    Weitere Informationen hierzu finden Sie unter Nachrichtenfluss erstellen.
  2. Verbinden Sie das Ausgangsterminal des MQInput -Knotens mit dem Eingangsterminal des Resequence -Knotens.
  3. Verbinden Sie die Out-, Missing-und Expire-Terminals des Knotens Resequence mit dem In-Terminal des MQOutput -Knotens.
    Nachrichtenfluss, der aus MQInput-, Resequence-und MQOutput-Knoten besteht.
  4. Legen Sie die folgenden Eigenschaften des MQInput -Knotens fest:
    1. Setzen Sie auf der Registerkarte Basis die Eigenschaft Warteschlangenname auf RESEQUENCE_TASK2_IN1
    2. Setzen Sie auf der Registerkarte Parsing der Eingabenachricht die Eigenschaft Nachrichtendomäne auf XMLNSC.
  5. Legen Sie auf der Registerkarte Basis des Knotens Umordnen die folgenden Eigenschaften fest:
    1. Legen Sie die Pfad zur Sequenznummer Eigentum an $Root/XMLNSC/Doc/SeqNo
    2. Setzen Sie die Eigenschaft Zeitlimit für fehlende Nachrichten auf 10 .
    3. Setzen der Eigenschaft Ende der Sequenzdefinition auf Automatisch mit dem Wert 60.
  6. Setzen Sie im MQOutput -Knoten die Eigenschaft Warteschlangenname (auf der Registerkarte Basis ) auf RESEQUENCE_TASK2_OUT1.
  7. Speichern Sie den Nachrichtenfluss.

Ergebnisse

Nachrichtenverarbeitung im Nachrichtenfluss:

In diesem Abschnitt wird beschrieben, wie der Resequence -Knoten die Nachrichten verarbeitet, die in den Nachrichtenfluss eingehen:

  1. Die folgenden Nachrichten gelangen in die WebSphere MQ -Warteschlange RESEQUENCE_TASK2_IN1:
    <Doc><SeqNo>0</SeqNo></Doc>,<Doc><SeqNo>1</SeqNo></Doc>,<Doc><SeqNo>2</SeqNo></Doc>,
    <Doc><SeqNo>3</SeqNo></Doc>,<Doc><SeqNo>4</SeqNo></Doc>,<Doc><SeqNo>5</SeqNo></Doc>,
    <Doc><SeqNo>6</SeqNo></Doc>,<Doc><SeqNo>7</SeqNo></Doc>,<Doc><SeqNo>8</SeqNo></Doc>,
  2. Der Resequence -Knoten empfängt zuerst die Nachricht mit der Folgenummer 0. Der Knoten Umordnen erstellt eine neue Folgegruppe zur Verwaltung des Umordnungsprozesses. Die neue Folgegruppe ist eine Standardgruppe, da keine Folgegruppe in der Nachricht definiert wurde. Die Nachricht (mit Folgenummer 0) ist die erste Nachricht der Folge und wird daher an das Out-Terminal weitergegeben.
  3. Der Resequence -Knoten empfängt dann die restlichen Nachrichten bis einschließlich Folgenummer 8 und gibt sie in der Reihenfolge weiter, in der sie eingegangen sind. Jede Nachricht wird vor ihrer Weitergabe gespeichert und es wird eine andere Transaktion für die Weitergabe der Nachrichten verwendet, die dem Resequence -Knoten nachgeordnet sind.
  4. Nach Ablauf von 60 Sekunden wird die Folgegruppe geschlossen.
  5. Die nächsten Nachrichten kommen in der WebSphere MQ Warteschlange RESEQUENCE_TASK2_IN1: an.
    <Doc><SeqNo>0</SeqNo></Doc>,<Doc><SeqNo>3</SeqNo></Doc>,<Doc><SeqNo>2</SeqNo></Doc>,
    <Doc><SeqNo>4</SeqNo></Doc>,<Doc><SeqNo>6</SeqNo></Doc>,<Doc><SeqNo>7</SeqNo></Doc>,
    
  6. Der Resequence -Knoten empfängt zuerst die Nachricht mit der Folgenummer 0. An diesem Punkt erstellt der Resequence -Knoten eine neue (Standard-) Folgegruppe und gibt die Nachricht mit der Folgenummer 0 an das Out-Terminal weiter.
  7. Die nächste Nachricht enthält Folgenummer 3, d. h. sie geht in falscher Reihenfolge ein. Die Eigenschaft Zeitlimit für fehlende Nachricht wird auf dem Resequence -Knoten mit einem Wert von 10 Sekunden festgelegt und der Zeitgeber wird gestartet.
  8. Folgenummer 2 geht ein. Es ist immer noch nicht die als Nächstes erforderliche Nachricht, aber eine niedrigere Nummer als die derzeit gespeicherte niedrigste Nachricht, daher wird der Zeitgeber für fehlende Nachrichten zurückgesetzt.
  9. Der Resequence -Knoten empfängt dann die restlichen Nachrichten, die alle eine höhere Folgenummer als 2 haben, sodass sie gespeichert, aber nicht weitergegeben werden. Diesmal wird der Zeitgeber für fehlende Nachrichten nicht zurückgesetzt, da alle Nummern in der Reihenfolge hinter Nummer 2 stehen.
  10. Folgenummer 1 geht innerhalb des angegebenen Zeitraums nicht ein und nach 10 Sekunden läuft das Zeitlimitintervall ab.
  11. Der Resequence -Knoten gibt alle gespeicherten Nachrichten weiter, beginnend mit der niedrigsten Folgenummer (in diesem Fall 2) gefolgt von allen anderen Nachrichten bis zur nächsten fehlenden Nummer in der Folge (in diesem Fall Nachrichten mit den Folgenummern 3 und 4). Die Nachrichten 2, 3 und 4 werden an das Expire-Terminal weitergegeben.
  12. Der Resequence -Knoten wird für diese Folgegruppe in einen ungeordneten Status versetzt und gibt keine Nachrichten in dieser Gruppe an das Out-Terminal weiter. Der Knoten Resequence verbleibt im ungeordneten Status für diese Folgegruppe, bis die Gruppe abläuft und geschlossen wird.
  13. Nach Ablauf weiterer 10 Sekunden läuft der Zeitgeber für fehlende Nachrichten erneut ab und die Nachrichten 6 und 7 werden an das Expire-Terminal weitergegeben. Zu diesem Zeitpunkt gibt es keine fehlenden Nachrichten mehr, daher wird der Zeitgeber für fehlende Nachrichten nicht mehr gestartet.
  14. Der Zeitgeber für das Ablaufen der Gruppe wird gestartet und die Gruppe wird nach 60 Sekunden geschlossen. Der Zeitgeber für das Ablaufen der Gruppe wird nicht gestartet, solange ein Zeitgeber für fehlende Nachrichten aktiv ist.