WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Nachrichtensortierungsszenario 2

Ändern Sie mithilfe einer in einer XML-Nachricht definierten Folgenummer die Sortierung der von WebSphere MQ empfangenen Nachrichten, so dass sie in der korrekten Reihenfolge weitergeleitet werden.

Bevor Sie beginnen:

Lesen Sie den Konzeptabschnitt über Nachrichtenfolgebildung.

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 einer anderen als der korrekten Reihenfolge eingehen können, der Resequence-Knoten versucht jedoch, sie in der korrekten Reihenfolge weiterzugeben. Wenn eine erforderliche Nachricht der Folge 10 Sekunden lang nicht eingeht, überspringt der Resequence-Knoten die fehlende Nachricht und gibt die in der Reihenfolge folgende Nachricht weiter, obwohl dann die korrekte Reihenfolge nicht mehr gewahrt ist.

Im Folgenden wird beschrieben, wie ein Nachrichtenfluss erstellt wird, der das XML-Dokument von WebSphere MQ empfangen und die Nachrichten basierend auf einer Folgenummer in einer XML-Nachricht neu ordnen kann (in diesem Beispiel wird der Pfad $Root/XMLNSC/Doc/SeqNo verwendet) sowie in eine WebSphere-MQ-Warteschlange schreiben kann:

  1. Erstellen Sie einen Nachrichtenfluss mit dem Namen 'Resequence_Task2', der einen MQInput-Knoten, einen Resequence-Knoten und einen MQOutput-Knoten enthält. Weitere Informationen hierzu finden Sie im Abschnitt Nachrichtenflüsse erstellen.
  2. Verbinden Sie das Ausgangsterminal des Knotens MQInput mit dem Eingangsterminal des Knotens Resequence.
  3. Verbinden Sie das Ausgangsterminal, das Terminal für fehlende und das für abgelaufene Nachrichten des Knotens Resequence mit dem Eingangsterminal des Knotens MQOutput.
    Nachrichtenfluss mit den Knoten MQInput, Resequence und MQOutput.
  4. Legen Sie die folgenden Eigenschaften des Knotens MQInput fest:
    1. Setzen Sie auf der Registerkarte Grundeinstellung die Eigenschaft Warteschlangenname auf RESEQUENCE_TASK2_IN1
    2. Setzen Sie auf der Registerkarte Syntaxanalyse der Eingabenachricht die Eigenschaft Nachrichtendomäne auf XMLNSC.
  5. Legen Sie für den Resequence-Knoten folgende Eigenschaften auf der Registerkarte Grundeinstellung fest:
    1. Setzen Sie die Eigenschaft Pfad zu Folgenummer auf $Root/XMLNSC/Doc/SeqNo
    2. Setzen Sie die Eigenschaft Fehlendes Nachrichtenzeitlimit auf 10
    3. Setzen Sie die Eigenschaft Ende der Folgedefinition auf Automatisch und den Wert 60.
  6. Setzen Sie für den Knoten MQOutput die Eigenschaft Warteschlangenname (auf der Registerkarte Grundeinstellung) auf RESEQUENCE_TASK2_OUT1.
  7. Speichern Sie den Nachrichtenfluss.

Nachrichtenverarbeitung im Nachrichtenfluss:

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

  1. Folgende Nachrichten gehen in der WebSphere MQ-Warteschlange RESEQUENCE_TASK2_IN1 ein:
    <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 Resequence-Knoten erstellt eine neue Folgegruppe zur Verwaltung des Neuordnungsprozesses. 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 Ausgangsterminal weitergegeben.
  3. Der Resequence-Knoten empfängt dann die übrigen Nachrichten bis einschließlich Folgenummer 8 und gibt diese in der Reihenfolge weiter, in der sie eingehen. Jede Nachricht wird vor der Weitergabe gespeichert. Zur Weitergabe der dem Resequence-Knoten nachgeordneten Nachrichten wird eine andere Transaktion verwendet.
  4. Nach Ablauf von 60 Sekunden wird die Folgegruppe geschlossen.
  5. Die nachfolgenden Nachrichten gehen in der WebSphere MQ-Warteschlange RESEQUENCE_TASK2_IN1 ein:
    <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 Folgenummer 0. An dieser Stelle erstellt der Resequence-Knoten eine neue (Standard-) Folgegruppe und gibt die Nachricht mit Folgenummer 0 an das Ausgangsterminal weiter.
  7. Die nächste Nachricht enthält Folgenummer 3, d. h. sie geht in falscher Reihenfolge ein. Die Eigenschaft Fehlendes Nachrichtenzeitlimit auf dem Resequence ist auf einen Wert von 10 Sekunden gesetzt, 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 übrigen Nachrichten, die alle über höhere Folgenummern als 2 verfügen und daher gespeichert, jedoch 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 bei der niedrigsten Folgenummer (in diesem Fall 2), gefolgt von allen anderen Nachrichten bis zu der nächsten fehlenden Nummer in der Reihenfolge (in diesem Fall die Nachrichten mit den Folgenummern 3 und 4). Die Nachrichten 2, 3 und 4 werden an das Terminal für abgelaufene Nachrichten weitergegeben.
  12. Der Resequence-Knoten wird für diese Folgegruppe in einen ungeordneten Zustand versetzt und gibt keine Nachrichten dieser Gruppe an das Ausgangsterminal weiter. Der Resequence-Knoten bleibt für diese Folgegruppe im ungeordneten Zustand, bis die Gruppe abgelaufen ist 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 Terminal für abgelaufene Nachrichten 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.
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:22:33


TaskthemaTaskthema | Version 8.0.0.5 | bc28025_