Aggregations-Verteilernachrichtenfluss erstellen

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.

Nachfolgend sehen Sie ein Beispiel eines Verteilernachrichtenflusses, der in WebSphere Message Broker enthalten ist. 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 Verteilernachrichtenfluss zu erstellen:

  1. Wechseln Sie in die Ansicht 'Brokeranwendungsentwicklung'.
  2. Erstellen Sie einen neuen Nachrichtenfluss, um die Verteilungsverarbeitung zu ermöglichen.
  3. Fügen Sie in der Editoransicht folgende Knoten hinzu, und konfigurieren und verbinden Sie diese wie beschrieben:
    Empfangsknoten
    Der Empfangsknoten (Input) empfängt eine Eingabenachricht, auf deren Basis mehrere Anforderungsnachrichten generiert werden. Bei diesem Knoten kann es sich um einen der integrierten Knoten oder um einen benutzerdefinierten Empfangsknoten handeln.
    1. Wählen Sie 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 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. Legen Sie beispielsweise für die erweiterte Eigenschaft Transaktionsmodus die Standardeinstellung Ja fest, um sicherzustellen, dass Nachrichten für Aggregationsanforderungen unter dem Synchronisationspunkt eingereiht werden. Durch diese Option wird vermieden, dass der AggregateReply-Knoten Antwortnachrichten vor der Steuernachricht erhält, in der der Knoten über die Aggregationsinstanz informiert wird. Durch die transaktionale Steuerung für den Verteilernachrichtenfluss stellen Sie sicher, dass der Verteilernachrichtenfluss beendet wird, bevor der AggregateReply-Knoten eine Antwortnachricht enthält.
    4. Verbinden Sie das Ausgangsterminal des Empfangsknotens mit dem Eingangsterminal eines AggregateControl-Knotens. Diese Option ist die einfachste Konfiguration; Sie können zwischen dem Empfangsknoten und dem AggregateControl-Knoten gegebenenfalls weitere Knoten einfügen. Beispiel: Sie möchten die Anforderung zu Prüfzwecken speichern (in einem Warehouse-Knoten) oder der Nachricht eine eindeutige Kennung hinzufügen (in einem Compute-Knoten).
    5. Optional: Wenn Ihre Verteiler- und Sammelnachrichtenflüsse in einem Nachrichtenfluss kombiniert sind, ändern Sie die Eigenschaft Modus für Reihenfolge auf der Registerkarte Erweitert. Wählen Sie die Option Nach WS-Reihenfolge und stellen Sie sicher, dass auch die Option Logische Reihenfolge ausgewählt ist. Durch diese Optionen wird der Empfangsknoten zwangsweise zu einem Einzelthread, um die logische Reihenfolge der Nachrichten beizubehalten, die in der Warteschlange eintreffen. Dadurch wird jeder von Ihnen zur Verfügung gestellte zusätzliche Instanz-Thread nur gemeinsam von den Empfangsknoten der Sammelnachrichtenflüsse benutzt, um die Leistung der Aggregation zu verbessern. Wenn sich Ihre Sammel- und Verteilernachrichtenflüsse in separaten Nachrichtenflüssen befinden, ist dieser Schritt nicht erforderlich, da Sie dem Sammelnachrichtenfluss zusätzliche Threads speziell zur Verfügung stellen können.
    AggregateControl-Knoten
    Der AggregateControl-Knoten aktualisiert die lokale Umgebung, die der Eingabenachricht zugeordnet ist, mit Informationen, die der AggregateRequest-Knoten benötigt. Der AggregateControl-Knoten erstellt den Ordner 'LocalEnvironment.ComIbmAggregateControlNode'. Dieser Ordner und die darin enthaltenen Felder werden intern von WebSphere Message Broker verwendet, d. h., bei der Entwicklung eigener Nachrichtenflüsse sollte weder auf ihr Vorhandensein noch auf darin enthaltene Werte Bezug genommen werden.
    1. Wählen den AggregateControl-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 AggregateControl-Knotens fest, um diese spezielle Aggregation zu identifizieren. Dieser Name wird später für die Zuordnung dieses AggregateControl-Knoten zu einem bestimmten AggregateReply-Knoten verwendet. Der von Ihnen angegebene Aggregationsname muss im jeweiligen Kontext innerhalb eines Brokers eindeutig sein.
    3. Optional: Legen Sie die Eigenschaft Zeitlimit fest, um anzugeben, wie lange der Broker auf eingehende Antworten wartet, bevor er eine Maßnahme ergreift (siehe Beschreibung unter Zeitlimits für die Aggregation festlegen). Wenn im AggregateControl-Knoten kein Zeitlimit festgelegt ist, werden intern gespeicherte Aggregationsanforderungen nicht entfernt, es sei denn, dass alle Aggregationsantwortnachrichten zurückgegeben werden. Diese Situation kann nach und nach zu einem Rückstau von Nachrichten in den internen Warteschlangen führen. Um diese Situation zu vermeiden, sollten Sie für das Zeitlimit einen anderen Wert als null festlegen (null bedeutet, dass nie eine Zeitlimitüberschreitung auftritt), damit die Anforderungen bei Ablauf des Zeitlimits entfernt werden und sich die Warteschlangen nicht mit redundanten Anforderungen füllen. Selbst wenn keine Zeitlimits erforderlich sind oder erwartet werden, sollten Sie das Zeitlimit dennoch auf einen sehr großen Wert (z. B. 86400 Sekunden, das entspricht 24 Stunden) setzen, damit die Warteschlangen wenigstens gelegentlich von alten Aggregationen bereinigt werden .
    4. Verbinden Sie das Ausgangsterminal des AggregateControl-Knotens mit dem Eingangsterminal eine oder mehrerer Compute-Knoten, die die Analyse und Aufsplittung der Anforderung in der Eingabenachricht bereitstellen, die in diesem Terminal weitergegeben wird.
    Achtung: Das Steuerterminal des AggregateControl-Knotens von Version 6.0 ist veraltet und standardmäßig werden alle Verbindungen (direkt oder indirekt) von diesem Terminal zum AggregateReply-Knoten ignoriert. Diese Konfiguration maximiert wird die Effizienz der Aggregationsflüsse, während die Zuverlässigkeit der Aggregationen nicht beeinträchtigt wird. Dies ist die optimale Konfiguration.

    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.

    Compute-Knoten
    Der Compute-Knoten extrahiert Informationen aus der Eingabenachricht und konstruiert eine neue Ausgabenachricht.

    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:

    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. Wählen Sie für die Basiseigenschaft Rechenmodus einen Wert aus. Diese Eigenschaft gibt an, welche Bereiche der Nachrichtenbaumstruktur vom Knoten geändert werden. Der AggregateControl-Knoten fügt Elemente in die Baumstruktur der lokalen Umgebung (LocalEnvironment) in der Eingabenachricht ein, die vom AggregateRequest-Knoten gelesen werden, sobald die Nachricht diesen erreicht. Vergewissern Sie sich, dass der Eintrag für die lokale Umgebung (LocalEnvironment) im Compute-Knoten aus der Eingabenachricht in die Ausgabenachricht kopiert wird. Diese Konfiguration erfolgt automatisch, es sei denn, Sie geben einen Wert an, der die lokale Umgebung enthält (entweder Alle, Lokale Umgebung, Lokale Umgebung und Nachricht oder Ausnahme und lokale Umgebung).

      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;
    3. Optional: Geben Sie für alle Eigenschaften, die für diesen Knoten konfiguriert werden sollen, Werte an.
    4. Verbinden Sie das Ausgangsterminal jedes Compute-Knotens mit dem Eingangsterminal des Sendeknotens, der die Zieladresse der Ausgabeanforderungsnachricht darstellt, die Sie auf Basis der Eingabenachricht in diesem Knoten erstellt haben.
    Sendeknoten
    Fügen Sie für jede Ausgabenachricht, die Sie in Ihrem Verteilernachrichtenfluss generieren, einen Sendeknoten ein. Konfigurieren Sie jeden Knoten wie weiter unten in diesem Abschnitt beschrieben, und zwar mit den entsprechenden Änderungen für jede Zieladresse.

    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).

    1. Wählen Sie 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 Ausgabenachrichten an. Geben Sie beispielsweise in der Basiseigenschaft Warteschlangenname den Namen einer WebSphere MQ-Warteschlange an, an die der MQOutput-Knoten Nachrichten sendet. Die Zielanwendung muss ihre Anforderung verarbeiten und die Antwort an die Antwortzieladresse senden, die in ihrer Eingabenachricht angegeben ist (z. B. die WebSphere MQ Warteschlange für Antwortnachrichten).
    3. Klicken Sie in der linken Ansicht auf 'Anforderung', und legen Sie für diese Eigenschaften Werte fest, um anzugeben, dass Antworten an die Eingabewarteschlange des Sammelnachrichtenflusses gesendet werden sollen.
    4. Optional: Geben Sie für alle Eigenschaften, die für diesen Knoten konfiguriert werden sollen, Werte an.
    5. Verbinden Sie das Ausgangsterminal des Sendeknotens mit dem Eingangsterminal eines AggregateRequest-Knotens. Wenn die Nachricht über das Ausgangsterminal des Sendeknotens weitergegeben wird, aktualisiert der integrierte Sendeknoten den Ordner 'WrittenDestination' in der zugehörigen lokalen Umgebung mit zusätzlichen Informationen, die vom AggregateRequest-Knoten benötigt werden.

      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).

    AggregateRequest-Knoten
    Fügen Sie für jede Ausgabenachricht, die Sie in Ihrem Verteilernachrichtenfluss generieren, einen AggregateRequest-Knoten ein.
    1. Wählen den AggregateRequest-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. Setzen Sie die Basiseigenschaft Ordnername auf einen Wert, der die Art der gesendeten Anforderung identifiziert. Dieser Wert wird vom AggregateReply-Knoten für den Abgleich mit der Antwortnachricht verwendet, wenn sie im Sammelnachrichtenfluss empfangen wird. Der Ordnername, den Sie für jede vom Verteilernachrichtenfluss generierte Anforderung angeben, muss eindeutig sein.

    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.

    ACHTUNG:
    Die Verwendung von Zeitlimits kann zwar dabei helfen, die oben beschriebene Situation zu vermeiden. Sie sollten Ihren Verteilernachrichtenfluss jedoch transaktionsorientiert konfigurieren, sodass Antwortnachrichten nicht in den Sammelnachrichtenfluss gelangen können, bevor die Datenbankaktualisierungen durch die zugehörigen AggregateRequest-Knoten festgeschrieben wurden.
  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).
Zur Erfassung der Aggregationsantworten durch Ihren Verteilernachrichtenfluss müssen Sie einen Sammelnachrichtenfluss erstellen (siehe Aggregations-Sammelnachrichtenfluss erstellen).
Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Baumstruktur für die lokale Umgebung
Nachrichtenfluss-Aggregation
Zugehörige Tasks
Aggregationsflüsse konfigurieren
Aggregations-Sammelnachrichtenfluss erstellen
Verwendung der Steuernachricht in Aggregationsflüssen
Aggregations-Verteilungsflüsse und -Sammlungsflüsse zuordnen
Zeitlimits für die Aggregation festlegen
Mehrere Knoten zur Aggregationssteuerung verwenden
Handhabung von Ausnahmebedingungen in Aggregationsflüssen
Benutzerdefinierte Erweiterungen entwickeln
Zugehörige Verweise
AggregateControl-Knoten
AggregateReply-Knoten
AggregateRequest-Knoten
Compute-Knoten
MQInput-Knoten
MQOutput-Knoten
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

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

ac12290_