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.

Aggregations-Sammelnachrichtenfluss erstellen

Der Aggregations-Sammelnachrichtenfluss empfängt die Antworten auf die Anforderungsnachrichten, die vom Verteilernachrichtenfluss gesendet wurden, und konstruiert eine kombinierte Antwortnachricht mit allen empfangenen Antworten.

Bevor Sie beginnen:

Der Verteiler- und der Sammelnachrichtenfluss können im selben Nachrichtenfluss enthalten sein. Sie werden es jedoch möglicherweise vorziehen, zwei separate Flüsse zu erstellen. Weitere Informationen zu den Vorteilen der Konfiguration separater Nachrichtenflüsse finden Sie unter Aggregations-Verteilungsflüsse und -Sammlungsflüsse zuordnen. Richten Sie in derselben oder in verschiedenen Ausführungsgruppen nicht mehrere Kopien desselben Sammelnachrichtenflusses ein.

Wenn Sie den Verteilernachrichtenfluss nicht so konfigurieren, dass er transaktional ist, kann es sein, dass aufgrund der angegebenen Zeitlimitwerte die kombinierte Antwortnachricht generiert wird, bevor alle Antworten vom Sammelnachrichtenfluss empfangen wurden. Der Abschnitt Aggregations-Verteilernachrichtenfluss erstellen enthält weitere Informationen hierzu.

Ein Muster eines Sammelnachrichtenflusses finden Sie im folgenden Beispiel:

Informationen zu Beispielen können nur bei Verwendung des in das WebSphere Message Broker Toolkit integrierten bzw. online verfügbaren Information Center angezeigt werden. Muster können nur ausgeführt werden, wenn das im WebSphere Message Broker Toolkit integrierte Information Center verwendet wird.

Gehen Sie folgendermaßen vor, um den Sammelnachrichtenfluss zu erstellen:

  1. Erstellen Sie einen Nachrichtenfluss, um die Sammlungsverarbeitung zu ermöglichen.
  2. Fügen Sie in der Editoransicht folgende Knoten hinzu und konfigurieren und verbinden Sie diese wie beschrieben:
    Empfangsknoten
    Der Empfangsknoten empfängt die Antworten auf die Mehrfachanforderungsnachrichten, die vom Verteilernachrichtenfluss generiert wurden.

    Hierbei muss es sich um einen Empfangsknoten handeln, der das Request/Reply-Modell unterstützt, z. B. ein MQInput-Knoten oder eine Kombination aus diesen Knoten (dies hängt von den Anforderungen der Anwendungen ab, von denen diese Antworten gesendet werden). Die von den einzelnen Empfangsknoten empfangene Antwort muss in demselben Protokoll gesendet werden wie die Anforderung, der sie entspricht. Wenn Sie beispielsweise einen MQOutput-Knoten im Verteilernachrichtenfluss einschließen, muss die Antwort auf diese Anforderung von einem MQInput-Knoten in diesem Sammelnachrichtenfluss empfangen werden.

    1. Wählen Sie den Empfangsknoten aus, um die Ansicht 'Eigenschaften' anzuzeigen. Daraufhin werden die Eigenschaften des Knotens angezeigt.
    2. Geben Sie die Eingabenachrichtenquelle für diesen Knoten an, z. B. in der Basiseigenschaft Warteschlangenname den Namen einer WebSphere MQ-Warteschlange an, aus der der MQInput-Knoten Nachrichten empfängt.
    3. Optional: Geben Sie für alle Eigenschaften, die für diesen Knoten konfiguriert werden sollen, Werte an.
    4. Verbinden Sie das Ausgangsterminal des Empfangsknotens mit dem Eingangsterminal eines AggregateReply-Knotens.

      Diese Art der Terminalverbindung ist die einfachste Konfiguration; Sie können zwischen dem Empfangsknoten und dem AggregateReply-Knoten gegebenenfalls weitere Knoten einfügen, um beispielsweise die Anforderung zu Prüfzwecken zu speichern (in einem Datenbank-Knoten).

    Richten Sie wie zuvor beschrieben einen Empfangsknoten ein, der alle Aggregationsantwortnachrichten am Anfang des Sammelnachrichtenflusses empfängt. Wenn Sie mehrere Knoten verwenden, beenden Threads, die von einem bestimmten Antwortempfangsknoten gestartet wurden, eventuell gerade die Aggregation und Ausführung des Nachrichtenflusses, während andere Threads ihre Antwortnachrichten an den AggregateReply-Knoten senden, wodurch es zu einer Zeitlimitüberschreitung kommen kann. Verwenden Sie daher nur einen Empfangsknoten, um die sequenzielle Verarbeitung der Antworten für die einzelnen Aggregationen sicherzustellen. Durch Definition zusätzlicher Instanzen stellen Sie in diesem Fall einen größeren Durchsatz in diesem Knoten sicher (siehe Konfigurierbare Nachrichtenflusseigenschaften).

    AggregateReply-Knoten
    Der AggregateReply-Knoten empfängt die eingehenden Antworten vom Empfangsknoten über sein Eingangsterminal. Der AggregateReply-Knoten speichert jede Antwortnachricht zur weiteren Verarbeitung.

    Wenn alle Antworten für eine bestimmte Gruppe von Aggregationsanforderungen erfasst wurden, erstellt der AggregateReply-Knoten eine zusammengefasste Antwortnachricht und gibt diese über das Ausgangsterminal weiter.

    1. Wählen Sie den AggregateReply-Knoten aus, um die Ansicht 'Eigenschaften' anzuzeigen. Daraufhin werden die Eigenschaften des Knotens angezeigt.
    2. Legen Sie die Eigenschaft Aggregationsname des AggregateReply-Knotens fest, um diese Aggregation zu identifizieren. Setzen Sie diesen Wert auf den Wert, der für die Eigenschaft Aggregationsname im entsprechenden AggregateControl-Knoten im Verteilernachrichtenfluss festgelegt wurde.
    3. Optional: Legen Sie für die Eigenschaft Zeitlimit bei unbekannten Nachrichten einen Wert fest, wenn Sie eine nicht erkannte Nachricht behalten möchten, bevor Sie diese an das UNBEKANNT-Terminal weitergeben. Wenn Sie separate Verteiler- und Sammelnachrichtenflüsse verwenden, setzen Sie diesen Wert auf eine Zahl ungleich null, falls beim Eingang der Steuernachricht Verzögerungen auftreten.
    4. Optional: Verbinden Sie das UNBEKANNT-Terminal mit einem anderen Knoten oder einer Folge von Knoten, wenn Sie nicht erkannte Nachrichten explizit verarbeiten möchten. Falls Sie dieses Terminal nicht mit einem anderen Knoten im Nachrichtenfluss verbinden, werden Nachrichten, die über dieses Terminal weitergegeben werden, gelöscht.
    5. Optional: Wenn Sie für diese Aggregation einen Zeitlimitwert im AggregateControl-Knoten angegeben haben, und Sie Zeitlimits, die vor Eintreffen aller Antworten erreicht werden, explizit verarbeiten möchten, verbinden Sie das Zeitlimit-Terminal mit einem anderen Knoten oder einer anderen Knotenfolge. Zusammengefasste Antworten, die nicht ganz vollständig sind, werden an das Zeitlimit-Terminal gesendet, wenn das Zeitlimit erreicht wird. Falls Sie dieses Terminal nicht mit einem anderen Knoten im Nachrichtenfluss verbinden, werden Nachrichten, die über dieses Terminal weitergegeben werden, gelöscht.
    6. Optional: Geben Sie für alle Eigenschaften, die für diesen Knoten konfiguriert werden sollen, Werte an.
    7. Verbinden Sie das Ausgangsterminal des AggregateReply-Knotens mit dem Eingangsterminal eines Compute-Knotens.
    Achtung: Das Steuerterminal des AggregateReply-Knotens ist seit Version 6.0 veraltet; standardmäßig werden alle Verbindungen (direkt oder indirekt) zu diesem Terminal ignoriert. Dadurch wird die Effizienz der Aggregationsflüsse maximiert, während die Zuverlässigkeit der Aggregationen nicht beeinträchtigt wird. Mit dieser Konfiguration wird eine Optimierung des Inhalts erreicht.

    Wenn der AggregateReply-Knoten jedoch auf seinem Steuerterminal die Steuernachricht empfangen soll, die vom entsprechenden AggregateControl-Knoten im Verteilernachrichtenfluss gesendet wurde, müssen Sie die unter Aggregations-Verteilernachrichtenfluss erstellen beschriebenen erforderlichen Verbindungen herstellen. Erstellen Sie einen möglichst direkten Pfad von AggregateReply-Knoten zum Sendeknoten. Der Inhalt dieser Steuernachricht darf nicht geändert werden.

    Für die Erkennung des Steuerterminals und der zugehörigen Verbindungen müssen Sie außerdem die Umgebungsvariable MQSI_AGGR_COMPAT_MODE aktivieren. Die Verwendung dieser Option wirkt sich unter Umständen auf das Verhalten von Nachrichtenaggregationen aus; eine vollständige Beschreibung dieser Auswirkungen und der Umgebungsvariablen finden Sie unter Verwendung der Steuernachricht in Aggregationsflüssen.

    Zusammengefasste Nachrichten, die von den Ausgabeterminals (Out und Timeout) des AggregateReply-Knotens gesendet werden, werden nicht ausgewertet. Auswertung von Daten muss vorgenommen werden, bevor Nachrichten an den AggregateReply-Knoten gesendet werden, da dieser Auswertungsoptionen bei der Wiederherstellung der gespeicherten Nachrichten ignoriert.

    Compute-Knoten
    Der Compute-Knoten empfängt die Nachricht, die die kombinierten Antworten enthält. Normalerweise ist das Format dieser kombinierten Nachricht nicht für die Ausgabe gültig, da die zusammengefasste Antwortnachricht eine unübliche Struktur aufweist und nicht in den für einige Knoten (z. B. den MQOutput-Knoten) erforderlichen Bitstrom analysiert werden kann. Die Ausgabe- und Zeitlimit-Terminals geben immer eine zusammengefasste Antwortnachricht weiter, die stets eine weitere Verarbeitung erfordert, bevor Sie an einen MQOutput-Knoten übergeben werden kann. Schließen Sie also einen Compute-Knoten ein und konfigurieren Sie ihn so, dass er eine gültige Ausgabenachricht erstellt.
    1. Wählen Sie den Compute-Knoten aus, um die Ansicht 'Eigenschaften' anzuzeigen. Daraufhin werden die Eigenschaften des Knotens angezeigt.
    2. Geben Sie in der Basiseigenschaft ESQL-Modul den Namen des ESQL-Moduls an, das die Funktion dieses Knotens anpasst.
    3. Klicken Sie mit der rechten Maustaste auf den Knoten und klicken Sie auf ESQL öffnen, um die ESQL-Datei zu öffnen, die das Modul für diesen Knoten enthält. Das Modul wird in der ESQL-Editoransicht hervorgehoben.
    4. Codieren Sie den ESQL-Code für die Erstellung einer einzelnen Ausgabenachricht auf Basis der zusammengefassten Antworten in der Eingabenachricht.

      Die zusammengefasste Antwortnachricht wird über das Ausgangsterminal weitergegeben. Informationen zum Zugriff auf ihren Inhalt finden Sie im Abschnitt Den Inhalt der kombinierten Nachricht aufrufen.

    5. Optional: Geben Sie für alle Eigenschaften, die für diesen Knoten konfiguriert werden sollen, Werte an.
    6. Verbinden Sie das Ausgangsterminal des Compute-Knotens mit dem Eingangsterminal des Sendeknotens, der die Zieladresse der einzelnen Antwortnachricht darstellt.
    Sendeknoten
    Schließen Sie für Ihren Sammelnachrichtenfluss einen Sendeknoten ein. Hierbei kann es sich um einen der integrierten Knoten oder um einen benutzerdefinierten Sendeknoten handeln.
    1. Wählen Sie den Sendeknoten aus, um die Ansicht 'Eigenschaften' anzuzeigen. Daraufhin werden die Eigenschaften des Knotens angezeigt.
    2. Geben Sie das Ausgabenachrichtenziel für diesen Knoten an, z. B. in der Basiseigenschaft Warteschlangenname den Namen einer WebSphere MQ-Warteschlange an, an die der MQOutput-Knoten Nachrichten sendet.
    3. Optional: Geben Sie für alle Eigenschaften, die für diesen Knoten konfiguriert werden sollen, Werte an.
  3. Um den Nachrichtenfluss zu speichern und seine Konfiguration zu überprüfen, drücken Sie Strg+S oder klicken Sie auf Datei > Speichern.

Den Inhalt der kombinierten Nachricht aufrufen

Der AggregateReply-Knoten erstellt in der Baumstruktur der kombinierten Nachricht unterhalb von 'Root' einen Ordner namens 'ComIbmAggregateReplyBody'. Darunter erstellt er mehrere Unterordner mit den Namen, die Sie in den AggregateRequest-Knoten festlegen. Diese Unterordner werden mit den entsprechenden Antwortnachrichten aufgefüllt.

Die Anforderungsnachrichten können beispielsweise folgende Ordnernamen haben:

  • TAXI
  • HOTEL

Die resultierende zusammengefasste Antwortnachricht, die vom AggregateReply-Knoten erstellt wurde, kann eine ähnliche Struktur wie diejenige des nachfolgenden Beispiels aufweisen:

Das Diagramm zeigt die Baumstruktur für den zusammengefassten Nachrichteninhalt, der unter 'Root' unterhalb des Elements 'ComIbmAggregateReplyBody' erstellt wurde. Sein Inhalt wird im umgebenden Text beschrieben.

Mithilfe von ESQL-Code in einem Compute-Knoten können Sie unter Verwendung des folgenden Korrelationsnamens die Antwort des Taxi-Unternehmens aufrufen:

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

Der Ordnername muss nicht eindeutig sein. Falls Sie mehrere Anforderungen mit dem Ordnernamen TAXI haben, können Sie die separaten Antworten mithilfe der Subscript-Schreibweise für Bereiche aufrufen. Beispiel:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

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

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:19:57


TaskthemaTaskthema | Version 8.0.0.5 | ac12300_