Verschiedene Lösungen zur Verbesserung der Reaktionszeiten von Nachrichtenflüssen verwenden.
Beim Entwerfen eines Nachrichtenflusses haben die Flexibilität und die Funktionen der integrierten Knoten häufig zur Folge, dass es mehrere Wege zum Erreichen des Verarbeitungsziels und der gewünschten Ergebnisse gibt.
Möglicherweise werden Sie feststellen, dass diese
unterschiedlichen Lösungen unterschiedliche Leistungswerte liefern. Wenn dies ein wichtiger Aspekt
für Sie ist, müssen Sie dies beim Entwerfen Ihres Nachrichtenflusses berücksichtigen.
Die Leistung wirkt sich auf Ihre Anwendungen auf eine der folgenden Arten aus:
- Die Reaktionszeit gibt an, wie schnell die einzelnen Nachrichten vom Nachrichtenfluss verarbeitet werden. Sie wird im Wesentlichen durch den Entwurf der Nachrichtenflüsse beeinflusst. Die Reaktionszeit wird in diesem Abschnitt weiter erläutert.
- Der Durchsatz gibt an, wie viele Nachrichten mit bestimmten Größen in einer angegebenen Zeit von einem Nachrichtenfluss verarbeitet werden können. Der Durchsatz hängt hauptsächlich von Konfigurations- und Systemressourcenfaktoren ab und wird im Abschnitt über die Optimierung des Durchsatzes von Nachrichtenflüssen zusammen mit anderen Informationen zur Domänenkonfiguration erläutert. Weitere Informationen hierzu finden Sie unter Durchsatz des Nachrichtenflusses optimieren.
Es gibt mehrere Aspekte, die die Reaktionszeiten von Nachrichtenflüssen beeinflussen. Um beim Erstellen und Ändern des Nachrichtenflusses die besten Ergebnisse hinsichtlich der
Geschäftsanforderungen zu erreichen, muss jedoch auch die mögliche Komplexität des
Nachrichtenflusses berücksichtigt werden. Die effizientesten Nachrichtenflüsse sind nicht
notwendigerweise diejenigen, die am einfachsten zu verstehen und zu verwalten sind; experimentieren
Sie mit den verfügbaren Lösungen, um diejenige zu finden, die allen Anforderungen am besten gerecht
wird.
Reaktionszeiten von Nachrichtenflüssen werden durch mehrere Faktoren beeinflusst:
- Anzahl der Knoten, die Sie in den Nachrichtenfluss einfügen
- Jeder Knoten verursacht Verarbeitungsaufwand im Broker. Deshalb sollten Sie den Inhalt
des Nachrichtenflusses und den Einsatz von untergeordneten Nachrichtenflüssen
sorgfältig prüfen.
Verwenden Sie in einem Nachrichtenfluss so wenig Knoten
wie möglich. Jeder Knoten, den Sie in einem Nachrichtenfluss einschließen,
erhöht den Verarbeitungsaufwand im Broker. Es
gibt eine Obergrenze für die Anzahl der Knoten in einem Nachrichtenfluss. Diese Obergrenze wird
durch Systemressourcen, insbesondere die Stack-Größe, bestimmt.
Weitere Informationen zu
Stack-Größen finden Sie unter Systemaspekte bei der Nachrichtenflussentwicklung.
- Weiterleitung und Verarbeitung von Nachrichten durch den Nachrichtenfluss
- In einigen Situationen bieten die integrierten Knoten und vielleicht auch andere Knoten, die in
Ihrem System zur Verfügung stehen, mehr als eine Möglichkeit, um dieselbe Funktion bereitzustellen. Wählen Sie die einfachste Konfiguration aus. Wenn Sie beispielsweise bestimmte Verarbeitungsschritte auf Basis des Wertes eines Feldes in einer Nachricht festlegen
möchten, können Sie einen Nachrichtenfluss mit einer Folge von Filter-Knoten zum Bearbeiten der
einzelnen Fälle entwerfen. Falls angebracht, können Sie Nachrichten zu Gruppen zusammenfassen und
durch den Filter-Knoten leiten, um die Anzahl der Filter, die jeder Nachrichtentyp vor der
Verarbeitung durchlaufen muss, zu reduzieren.
Beispiel: Sie verwenden einen
Nachrichtenfluss, der acht verschiedene Nachrichtentypen bearbeitet (Rechnung, Versandanzeige und
so weiter). Sie können einen Filter-Knoten einfügen, der die verschiedenen Nachrichtentypen erkennt
und die Nachrichten abhängig vom Typ weiterleitet. Sie können die Leistung dieses Verfahrens optimieren, indem Sie in den ersten Filter-Knoten Tests auf die häufigsten Nachrichtentypen durchführen. Der achte Nachrichtentyp muss jedoch immer durch acht Filter-Knoten geleitet werden.
Wenn Sie die Nachrichtentypen zu Gruppen zusammenfassen können (z. B., wenn der Nachrichtentyp numerisch ist und Sie Tests auf alle Typen größer als vier und nicht größer als vier durchführen können), können Sie die Anzahl der erforderlichen Filter-Knoten verringern. Der erste Filter-Knoten testet auf größer als vier und leitet die Nachricht an zwei weitere Filter-Knoten (angehängt an die TRUE- und FALSE-Terminals) weiter, die auf kleiner als zwei und kleiner als
sechs testen.
Zusätzliche vier Filter-Knoten können dann auf eins oder zwei, drei oder vier und so
weiter testen. Die tatsächliche Anzahl der erforderlichen Filter-Knoten ist zwar dieselbe, aber die
Anzahl der Knoten, die jede einzelne Nachricht durchlaufen muss, wird verringert.
Die Verwendung eines Knotens 'RouteToLabel' in Verbindung mit einer Gruppe von Label-Knoten stellt möglicherweise eine bessere Alternative zu einer Folge von Filter-Knoten dar. Jede Nachricht durchläuft eine kleinere Anzahl von Knoten, was den Durchsatz verbessert. Dabei müssen Sie jedoch beachten, dass die Verwendung eines RouteToLabel-Knotens bedeutet, dass ein Compute-Knoten verwendet wird: der zusätzliche Verarbeitungsaufwand für im Broker macht möglicherweise die Vorteile zunichte. Wenn eine begrenzte Anzahl von Nachrichtentypen verarbeitet wird, ist eine kleine Anzahl von Filter-Knoten die
effizientere Lösung.
Das folgende Beispiel zeigt, wie Sie anstatt mehrerer
Filter-Knoten im Nachrichtenfluss 'XML_PassengerQuery' die Knoten '
RouteToLabel' und
Label-Knoten verwenden können.
Hier erfahren Sie, wie Sie Route-Informationen in einer Datenbanktabelle in einem Speichercache im Nachrichtenfluss speichern können.
Sie können Beispiele nur anzeigen, wenn Sie das Information Center
verwenden, das im Message
Brokers Toolkit integriert ist.
- Nachrichtenfluss enthält Schleifen
- Vermeiden Sie Schleifen mit sich wiederholenden Knoten; sie können sehr ineffizient sein und
Leistungsprobleme und Stack-Fehler verursachen. Durch die Verwendung eines Compute-Knotens mit
mehreren PROPAGATE-Anweisungen lässt sich eine Schleife, die eine Folge von Knoten durchläuft, vermeiden.
- Effizienz des ESQL-Codes
- Überprüfen Sie den gesamten ESQL-Code, den Sie für Ihre Nachrichtenflussknoten erstellt haben. Beim Entwickeln und Testen eines Knotens haben Sie möglicherweise Anweisungen verwendet, die nach
Fertigstellung der Nachrichtenverarbeitung nicht mehr erforderlich sind. Überprüfen Sie auch, ob in
dem ein oder anderen Fall aus zwei Anweisungen eine einzige Anweisung gemacht werden kann. Nehmen
Sie sich Zeit für eine Überprüfung des ESQL-Codes, um ihn zu vereinfachen und
Leistungsverbesserungen zu erreichen.
Wenn Sie Nachrichtenflüsse aus
einem früheren Release importiert haben, überprüfen Sie die ESQL-Anweisungen hinsichtlich der in
Version 6.1 verfügbaren ESQL, um die Effizienz, wenn möglich, durch die Verwendung neuer Funktionen
oder Anweisungen zu erhöhen.
- Verwendung von persistenten und transaktionsorientierten Nachrichten
- Persistente Nachrichten werden während der Nachrichtenflussverarbeitung auf Platte gespeichert. Sie können diese Situation verhindern, indem Sie solche Nachrichten beim Empfangen oder Senden (oder bei
beiden Vorgängen) als nicht persistent angeben. Wenn Ihr Nachrichtenfluss nur nicht
persistente Nachrichten bearbeitet, überprüfen Sie die Konfiguration der Knoten und den
Nachrichtenfluss selbst. Falls es sich bei Ihren Nachrichten um nicht persistente Nachrichten
handelt, ist möglicherweise keine Transaktionsunterstützung notwendig. Die Standardkonfiguration
einiger Knoten erzwingt Transaktionsfähigkeit. Indem Sie diese Eigenschaften ändern und den
Nachrichtenfluss erneut implementieren, können Sie die Reaktionszeiten verbessern.
- Nachrichtenlänge
- Je länger eine Nachricht, desto länger dauert die Verarbeitung. Wenn Sie lange Nachrichten in
kleinere Informationseinheiten aufteilen, können Sie die Geschwindigkeit erhöhen, mit der sie vom
Nachrichtenfluss bearbeitet werden. Das folgende Beispiel zeigt, wie Sie die Anforderungen an den virtuellen Speicher für den Nachrichtenfluss minimieren können, um die Leistung eines Nachrichtenflusses bei der Verarbeitung potenziell großer Nachrichten zu verbessern.
Sie können Beispiele nur anzeigen, wenn Sie das Information Center
verwenden, das im Message
Brokers Toolkit integriert ist.
- Nachrichtenformat
- Obwohl WebSphere Message Broker mehrere Nachrichtenformate unterstützt und
Funktionen zur Umwandlung von einem Format in ein anderes bereitstellt, hat dies einen zusätzlichen
Verarbeitungsaufwand im Broker zur Folge. Stellen Sie sicher, dass keine unnötigen Konvertierungen oder
Umwandlungen ausgeführt werden.
Weitere Informationen zur Verbesserung der Leistung eines
Nachrichtenflusses finden Sie in diesem developerWorks-Artikel zur Nachrichtenflussleistung.