Nachrichtensortierungsszenario 1

Ä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 ist die Sequenz so definiert, dass sie bei Folgenummer 0 (Standardwert) beginnt und bei Folgenummer 8 endet. Der Nachrichtenfluss ist so konfiguriert, dass Nachrichten in der falschen Reihenfolge eingehen, aber nicht in der falschen Reihenfolge weitergegeben werden können, selbst wenn eine der Folgenummern nie eintrifft.

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_Task1mit 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 das Ausgangsterminal des Resequence -Knotens mit dem Eingangsterminal 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_TASK1_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 Ende der Sequenzdefinition auf Literal mit dem Wert 8.
  6. Setzen Sie auf dem MQOutput -Knoten die Eigenschaft Warteschlangenname (auf der Registerkarte Basis ) auf RESEQUENCE_TASK1_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 kommen in der WebSphere MQ RESEQUENCE_TASK1_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 der Verarbeitung der Nachricht mit Folgenummer 8 wird die Folgegruppe geschlossen. Für alle neuen Nachrichten derselben Gruppe, die danach eingehen, wird eine neue Gruppe erstellt.
  5. Die nächsten Nachrichten gehen in der Warteschlange RESEQUENCE_TASK1_IN1 ein:
    <Doc><SeqNo>8</SeqNo></Doc>,<Doc><SeqNo>7</SeqNo></Doc>,<Doc><SeqNo>6</SeqNo></Doc>,
    <Doc><SeqNo>5</SeqNo></Doc>,<Doc><SeqNo>4</SeqNo></Doc>,<Doc><SeqNo>3</SeqNo></Doc>,
    <Doc><SeqNo>2</SeqNo></Doc>,<Doc><SeqNo>1</SeqNo></Doc>,<Doc><SeqNo>0</SeqNo></Doc>,
  6. Der Resequence -Knoten empfängt zuerst die Nachricht mit der Folgenummer 8. An diesem Punkt erstellt der Knoten Umordnen eine neue (Standard-) Folgegruppe. Die Nachricht ist die letzte der Folge und wird daher nicht weitergegeben, sondern intern gespeichert.
  7. Der Resequence -Knoten empfängt dann die restlichen Nachrichten bis einschließlich Folgenummer 0. Alle Nachrichten werden gespeichert und keine weitergegeben, bis die erste Nummer in der Folge empfangen wird (in diesem Fall Folgenummer 0).
  8. Wenn die Nachricht mit Folgenummer 0 eingeht, wird sie über den Nachrichtenfluss weitergegeben, der Reihe nach gefolgt von den anderen Nachrichten, bis die letzte Nachricht (Folgenummer 8) weitergegeben wurde. Dann wird die Folgegruppe wieder geschlossen.