Der Aggregations-Verteilernachrichtenfluss empfängt die ursprüngliche Eingabenachricht und strukturiert sie so um, dass einer Reihe von Zielanwendungen eine Reihe von Anforderungen präsentiert werden.
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.
Gehen Sie folgendermaßen vor, um den Verteilernachrichtenfluss zu erstellen:
Wenn Sie jedoch eine Steuernachricht vom AggregateControl-Knoten an den AggregateReply-Knoten senden möchten, müssen Sie das Steuerterminal mit dem entsprechenden AggregateReply-Knoten im Sammelnachrichtenfluss verbinden (direkt oder indirekt; siehe Beschreibung unter Aggregations-Verteilungsflüsse und -Sammlungsflüsse zuordnen). Wenn Sie eine indirekte Verbindung zum AggregateReply-Knoten herstellen (beispielsweise über einen MQOutput-Knoten), müssen Sie einen Compute-Knoten einfügen, um der Nachricht die entsprechenden Header hinzuzufügen. Auf diese Weise wird die sichere Übertragung der Nachricht gewährleistet.
Für die Erkennung des Steuerterminals und der zugehörigen Verbindungen müssen Sie außerdem die Umgebungsvariable MQSI_AGGR_COMPAT_MODE aktivieren. Diese Option hat jedoch Auswirkungen hinsichtlich der Leistung und des Verhaltens von Nachrichtenaggregationen. Eine vollständige Beschreibung dieser Auswirkungen und der Umgebungsvariable finden Sie unter Verwendung der Steuernachricht in Aggregationsflüssen.
Wenn die Zielanwendungen, von denen die Subtask-Anforderungen verarbeitet werden, die benötigten Informationen aus der einzelnen Eingabenachricht extrahieren können, muss kein Compute-Knoten zur Teilung der Nachricht eingefügt werden. Sie können die gesamte Eingabenachricht an alle Zielanwendungen übergeben.
Falls Ihre Zielanwendungen dem Empfang einer einzelnen Anforderung anstelle der gesamten Eingabenachricht erwarten, müssen Sie einen Compute-Knoten einfügen, um jede einzelne Subtask-Ausgabenachricht auf Basis der Eingabenachricht zu generieren. Konfigurieren Sie jeden Compute-Knoten wie im Folgenden beschrieben, und kopieren Sie die entsprechende Untergruppe der Eingabenachricht in die jeweilige Ausgabenachricht:
Wenn Sie einen dieser Werte angeben, geht der Broker davon aus, dass Sie den Compute-Knoten mit ESQL-Code anpassen, der in die lokale Umgebung schreibt. Außerdem wird vorausgesetzt, dass Sie Einträge über Elemente in dieser Baumstruktur kopieren, die in der Ausgabenachricht erforderlich sind.
Falls Sie die lokale Umgebung ändern möchten, fügen Sie die folgende Anweisung hinzu, um die erforderlichen Aggregationsdaten aus der Eingabenachricht in die Ausgabenachricht zu kopieren:
SET OutputLocalEnvironment.ComIbmAggregateControlNode = InputLocalEnvironment.ComIbmAggregateControlNode;
Hierbei muss es sich um einen Sendeknoten handeln, der das Request/Reply-Modell unterstützt, z. B. ein MQOutput-Knoten oder eine Kombination aus diesen Knoten (dies hängt von den Anforderungen der Zielanwendungen ab).
Bei den Informationen, die von den integrierten Knoten geschrieben werden, handelt es sich um den Namen der Warteschlange und des WS-Managers, die Nachrichten- und Korrelations-ID (des MQMD) sowie um die Nachrichtenantwort-ID (auf denselben Wert wie die Nachrichten-ID gesetzt).
Der AggregateRequest-Knoten schreibt für jede von ihm verarbeitete Nachricht einen Datensatz in WebSphere MQ. Mit diesem Eintrag kann der AggregateReply-Knoten ermitteln, welche Anforderung den einzelnen Antworten zugeordnet ist. Wenn Ihre Sendeknoten nicht transaktionsgesteuert sind, geht die Antwortnachricht möglicherweise vor der Festschreibung dieser Datenbankaktualisierung im Sammelnachrichtenfluss ein. Unter Zeitlimits für die Aggregation festlegen finden Sie detaillierte Informationen darüber, wie diese Situation mithilfe von Zeitlimits vermieden werden kann.