Jeder von Ihnen entworfene Nachrichtenfluss muss einen vollständigen Satz von Verarbeitungsschritten für Nachrichten, die von einer bestimmten Quelle empfangen werden,
enthalten. Durch diese Gestaltung können sehr komplexe Nachrichtenflüsse entstehen, die eine große Zahl von Knoten
enthalten und Leistungseinbußen und mögliche Engpässe verursachen können. Eine Erhöhung der Anzahl von Nachrichtenflüssen zur Verarbeitung der Nachrichten bietet die Möglichkeit zur Parallelverarbeitung
und dadurch einen verbesserten Durchsatz.
Der Betriebsmodus Ihres Brokers kann Einfluss auf die Anzahl an Nachrichtenflüssen haben, die Sie verwenden können. Weitere Informationen finden Sie in den Abschnitten WebSphere Message Broker - Funktionen und Einschränkungen, die in jedem Betriebsmodus gelten.
Sie können auch die Art und Weise, in der die vom
Nachrichtenfluss ausgeführten Aktionen festgeschrieben werden, und die Reihenfolge, in der
Nachrichten verarbeitet werden, beeinflussen.
Im
WebSphere Message
Broker Explorer können Sie Berechnungs- und Statistikdaten zu Nachrichtenflüssen anzeigen. Informationen zum Zugriff auf diese Statistikdaten finden Sie im Abschnitt Berechnungs- und Statistikdaten im WebSphere Message Broker Explorer anzeigen.
Berücksichtigen Sie die folgenden Optionen zur
Optimierung des Nachrichtenflussdurchsatzes:
- Verarbeitung von Nachrichten durch mehrere Threads in einem einzigen Nachrichtenfluss
- Beim Einsetzen eines Nachrichtenflusses startet der Broker automatisch eine Instanz des
Nachrichtenflusses für jeden darin enthaltenen Empfangsknoten.
Dieses Verhalten ist die Standardeinstellung. Wenn Sie jedoch einen Nachrichtenfluss einsetzen, der eine sehr große Zahl von Nachrichten verarbeiten
muss, können Sie weitere Instanzen des Nachrichtenflusses zuweisen, damit mehr Nachrichten auf einmal verarbeitet werden können.
Sie können die
Eigenschaft Zusätzliche Instanzen des implementierten Nachrichtenflusses in der BAR-Datei aktualisieren.
Der Broker startet dann zusätzliche Kopien des Nachrichtenflusses in separaten Threads und ermöglicht dadurch eine Parallelverarbeitung. Diese Option
ist die effektivste Methode zur Handhabung dieser Situation, wenn die Reihenfolge, in der Nachrichten verarbeitet werden, nicht so wichtig ist.
Wenn der Nachrichtenfluss Nachrichten aus einer
WebSphere MQ-Warteschlange empfängt, können Sie die Reihenfolge, in
der Nachrichten verarbeitet werden, beeinflussen, indem Sie die
Eigenschaft Modus für Reihenfolge des MQInput-Knotens festlegen:
- Wenn Sie für Modus für Reihenfolge den Wert Nach Benutzer-ID oder Benutzerdefiniert festlegen und der Nachrichtenfluss Transformationsknoten verwendet, wird empfohlen, für Zeitpunkt für Syntaxanalyse den Wert Sofort festzulegen.
- Mehrere Kopien des Nachrichtenflusses in einem Broker
- Sie können auch mehrere Kopien desselben Nachrichtenflusses in verschiedenen
Ausführungsgruppen im gleichen Broker einsetzen. Dies hat ähnliche Auswirkungen wie die Erhöhung der Anzahl der Verarbeitungsthreads in einem
einzelnen Nachrichtenfluss.
Bei dieser Option kann die Verarbeitungsreihenfolge der Nachrichten nicht mehr bestimmt werden. Der Grund
hierfür ist, dass bei mehreren aktiven Kopien des Nachrichtenflusses im Broker jede der Kopien eine
Nachricht zur selben Zeit aus derselben Warteschlange verarbeiten kann. Die Zeit für die
Verarbeitung einer Nachricht kann variieren. Wenn mehrere Nachrichtenflüsse auf dieselbe
Warteschlange zugreifen, kann es deshalb vorkommen, dass Nachrichten aus der Eingabequelle in einer
Zufallsreihenfolge gelesen werden. Die von den Nachrichtenflüssen erstellte Reihenfolge der
Nachrichten entspricht dann möglicherweise nicht der Reihenfolge der ursprünglichen Nachrichten.
Stellen Sie sicher, dass Anwendungen, die Nachrichten von diesen Nachrichtenflüssen
empfangen, auch Nachrichten außerhalb der Reihenfolge akzeptieren. Darüber hinaus müssen Sie sicherstellen, dass die Empfangsknoten dieser Nachrichtenflüsse für die Implementierung in verschiedenen Prozessen geeignet sind.
- Kopien des Nachrichtenflusses in mehreren Brokern
- Sie können mehrere Kopien desselben Nachrichtenflusses in unterschiedlichen Brokern einsetzen. Diese Option erfordert Änderungen in der Konfiguration, weil Sie sicherstellen müssen, dass
Anwendungen, die Nachrichten an den Nachrichtenfluss liefern, ihre Nachrichten in die richtige
Eingabewarteschlange oder den richtigen Port stellen können. Sie können diese Änderungen in vielen
Fällen beim Einsetzen des Nachrichtenflusses durchführen, indem Sie die konfigurierbaren
Eigenschaften des Nachrichtenflusses festlegen.
- Umfang des Nachrichtenflusses
- Unter bestimmten Bedingungen kann es sinnvoll sein, einen einzelnen Nachrichtenfluss in mehrere
unterschiedliche Flüsse aufzuteilen, um den Arbeitsumfang für jeden einzelnen Nachrichtenfluss zu
verringern. Beachten Sie bei der Aufteilung Ihres Nachrichtenflusses jedoch, dass die separaten Nachrichtenflüsse nicht in
derselben Arbeitseinheit ausgeführt werden können. Falls Sie bei einem Nachrichtenfluss
transaktionsorientierte Aspekte berücksichtigen müssen (z. B. die Aktualisierung mehrerer
Datenbanken), stellt diese Option keine geeignete Lösung dar.
Die folgenden zwei Beispiele zeigen, wann das Aufteilen eines Nachrichtenflusses
sinnvoll sein kann:
- In einem Nachrichtenfluss, der einen RouteToLabel verwendet, kann sich die
Eingabewarteschlange vergrößern, was darauf hindeutet, dass die Arbeit schneller eintrifft als sie verarbeitet werden kann und eine Erhöhung der
Verarbeitungskapazität erforderlich ist. Sie können eine andere
Kopie des Nachrichtenflusses in einer zweiten Ausführungsgruppe einsetzen. Dies ist jedoch keine
geeignete Lösung, wenn alle Nachrichten in der Reihenfolge verarbeitet werden sollen, in der sie in
der Warteschlangen stehen. Es besteht die Möglichkeit, alle Zweige des Nachrichtenflusses, die mit
einem Label-Knoten beginnen, abzutrennen, indem jedem dieser Zweige eine
Eingabewarteschlange und ein Empfangsknoten zur Verfügung gestellt werden. Dies kann sinnvoll sein,
weil die Nachricht, wenn sie vom RouteToLabel-Knoten an den relevanten Label-Knoten weitergeleitet
wird, in einem gewissen Grad von allen anderen Nachrichten unabhängig ist.
Gegebenenfalls müssen
Sie außerdem eine weitere Eingabewarteschlange und einen weiteren Empfangsknoten zur Ausführung
allgemeiner Verarbeitungsschritte bereitstellen, mit dem die Zweige des Label-Knotens eine Verbindung
herstellen, nachdem eine einmalige Verarbeitung erfolgt ist.
- Wenn Sie einen Nachrichtenfluss zur Verarbeitung sehr großer Nachrichten, die erhebliche Zeit
in Anspruch nehmen, einsetzen, haben Sie folgende Möglichkeiten:
- Erstellen Sie weitere Kopien des Nachrichtenflusses, die eine andere Eingabewarteschlange
verwenden (im Nachrichtenfluss selbst konfigurierbar oder durch Ändern der betreffenden
Eigenschaften beim Einsetzen des Nachrichtenflusses).
- Konfigurieren Sie Aliasnamen für die WebSphere MQ-Warteschlangen,
um Nachrichten von einigen Anwendungen an die alternative Warteschlange und den alternativen
Nachrichtenfluss umzuleiten.
Sie können auch einen neuen Nachrichtenfluss erstellen, der
die Funktion des ursprünglichen Nachrichtenflusses nachbildet ,aber nur große Nachrichten, die
sofort vom ursprünglichen Nachrichtenfluss an ihn weitergegeben werden, verarbeitet, wobei Sie
diesen dahingehend geändert haben, dass er die Größe der Eingangsnachrichten überprüft und die
großen Nachrichten umleitet.
- Häufigkeit von Festschreibungen
- Wenn ein Nachrichtenfluss Nachrichten in einer
WebSphere MQ-Warteschlange empfängt, können Sie für einige
Nachrichtenflussszenarios den Durchsatz verbessern, indem Sie die zugehörigen Standardeigenschaften
ändern, nachdem Sie den Nachrichtenfluss zu einer BAR-Datei hinzugefügt haben. (Diese Optionen sind
nicht verfügbar, wenn die Eingangsnachrichten von einem anderen Empfangsknoten entgegengenommen
werden; Festschreibungen in solchen Nachrichtenflüssen werden für jede einzelne Nachricht
durchgeführt.)
Die folgenden Eigenschaften steuern die Häufigkeit, mit der der Nachrichtenfluss
Transaktionen festschreibt:
- Festschreibungszähler. Diese Eigenschaft gibt
die Anzahl der Nachrichten an, die aus der Eingabewarteschlange verarbeitet werden, bevor ein
MQCMIT-Befehl ausgegeben wird.
- Festschreibungsintervall. Diese Eigenschaft
gibt das Zeitintervall an, nach dessen Ablauf ein MQCMIT gestartet wird.