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.

Vorbereitungen:

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: Sie können Beispiele nur anzeigen, wenn Sie das Information Center verwenden, das im Message Brokers Toolkit integriert ist.

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

  1. Wechseln Sie in die Ansicht 'Brokeranwendungsentwicklung'.
  2. Erstellen Sie einen Nachrichtenfluss, um die Sammlungsverarbeitung zu ermöglichen.
  3. 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 den Empfangsknoten aus, um die Ansicht 'Eigenschaften' zu öffnen, oder klicken Sie mit der rechten Maustaste auf den Knoten und anschließend auf Eigenschaften, um das Dialogfeld 'Eigenschaften' aufzurufen. Daraufhin werden die Eigenschaften des Knotens angezeigt.
    2. Geben Sie für diesen Knoten die Quelle der Eingabenachrichten an. Geben Sie beispielsweise in der Basiseigenschaft Name der Warteschlange den Namen einer WebSphere MQ-Warteschlange an, aus der der MQInput-Knoten Nachrichten abruft.
    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.

      Dies ist die einfachste Konfiguration; Sie können zwischen dem Empfangsknoten und dem AggregateReply-Knoten gegebenenfalls weitere Knoten einfügen. Beispiel: Sie möchten die Anforderung zu Prüfzwecken speichern (in einem Warehouse-Knoten).

    Richten Sie wie zuvor beschrieben einen Empfangsknoten ein, der alle Aggregationsantwortnachrichten am Anfang des Sammelnachrichtenflusses empfängt. Wenn Sie mehrere Empfangsknoten einfügen, können Threads, die von einem bestimmten Antwortempfangsknoten gestartet werden, die Aggregation und Ausführung des Nachrichtenflusses beenden, während andere ihre Antwortnachrichten an den AggregateReply-Knoten senden und das Zeitlimit überschreiten dürfen. Verwenden Sie einen einzelnen Empfangsknoten, um die sequenzielle Verarbeitung von Antworten für jede Aggregation zu ermöglichen. Geben Sie zusätzliche Instanzen an, um einen höheren Verarbeitungsdurchsatz in diesem einzelnen Knoten zu erreichen (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 den AggregateReply-Knoten aus, um die Ansicht 'Eigenschaften' zu öffnen, oder klicken Sie mit der rechten Maustaste auf den Knoten und anschließend auf Eigenschaften, um das Dialogfeld 'Eigenschaften' aufzurufen. 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 Terminal UNKNOWN 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 Terminal UNKNOWN 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 von Version 6.0 ist veraltet, und 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.

    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 den Compute-Knoten aus, um die Ansicht 'Eigenschaften' zu öffnen, oder klicken Sie mit der rechten Maustaste auf den Knoten und anschließend auf Eigenschaften, um das Dialogfeld 'Eigenschaften' aufzurufen. 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 im Ausgangsterminal weitergegeben. Informationen zum Zugriff auf die Inhalte finden Sie unter 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 den Sendeknoten aus, um die Ansicht 'Eigenschaften' zu öffnen, oder klicken Sie mit der rechten Maustaste auf den Knoten und anschließend auf Eigenschaften, um das Dialogfeld 'Eigenschaften' aufzurufen. Daraufhin werden die Eigenschaften des Knotens angezeigt.
    2. Geben Sie für diesen Knoten die Zieladresse der Ausgabenachricht an. Geben Sie beispielsweise 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.
  4. Wenn Sie den Nachrichtenfluss speichern und seine Konfiguration bestätigen möchten, drücken Sie 'Strg+S', oder klicken Sie im Taskleisten-Menü auf Datei > Namen speichern (wobei Namen für den Namen des Nachrichtenflusses steht).

Den Inhalt der kombinierten Nachricht aufrufen

Der AggregateReply-Knoten erstellt in der Baumstruktur der kombinierten Nachricht unterhalb von 'Root' einen Ordner namens 'ComIbmAggregateReplyBody'. Unter diesem Ordner erstellt der Knoten mehrere Unterordner und verwendet dabei die 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 in etwa folgende Struktur aufweisen:

Dies ist ein Diagramm der Baumstruktur für den zusammengefassten Nachrichteninhalt, der unter 'Root' unterhalb des Elements 'ComIbmAggregateReplyBody' erstellt wurde. Die Inhalte werden im umgebenden Text beschrieben.

Mit Hilfe 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
Zugehörige Konzepte
Nachrichtenfluss-Aggregation
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:28:18

ac12300_