Bei dem Ausführungsmodell von WebSphere Message Broker handelt es sich um ein System, mit dem Nachrichtenflüsse über eine Reihe von Knoten hinweg ausgeführt werden.
Beim Initialisieren einer Ausführungsgruppe werden der Laufzeitkomponente die geeigneten
LIL-Dateien zur Verfügung gestellt. Der Ausführungsgruppen-Laufzeitprozess wird gestartet und startet wiederum einen zugeordneten Konfigurationsthread. In der Ausführungsumgebung des Nachrichtenflusses ist der Nachrichtenfluss threadsicher. Sie können Nachrichtenflüsse gleichzeitig mit vielen Threads ausführen, ohne dass Sie sich um eine serielle Verarbeitung kümmern müssen. Keiner der von Ihnen implementierten benutzerdefinierten Knoten sollte das Threadmodell stören. Folgendes sollte bedacht werden:
- Eine in einem Nachrichtenfluss empfangene Nachricht wird nur von dem Thread verarbeitet, von dem sie empfangen wurde. Während der Nachrichtenverarbeitung findet kein Thread- oder Kontextwechsel statt.
- Datenstrukturen, auf die von Nachrichtenflüssen zugegriffen wird, sind nur als einzelner Thread sichtbar; diese Datenstrukturen bestehen für die Dauer der Lebenszeit der Nachricht, die verarbeitet wird.
- Alle Threads im Thread-Pool des Nachrichtenflusses verwenden gemeinsam eine einzige Instanz des Nachrichtenflusses. Dies steht insofern in Zusammenhang mit dem Verhalten eines Nachrichtenknotens, dass es keinen Status gibt.
- Der Speicherbedarf einer Ausführungsgruppe wird durch die Ausführung von Nachrichtenflüssen mit mehreren Betriebssystemsthreads nicht nachteilig beeinflusst.
- Die Ausführungsumgebung des Nachrichtenflusses hat vom Konzept her Ähnlichkeit mit der prozeduralen Programmierung. Knoten, die in einen Nachrichtenfluss eingefügt werden, sind wie Subroutinen, die über eine Funktionsaufrufschnittstelle aufgerufen werden. Allerdings wird das Ausführungsmodell von WebSphere Message Broker nicht als eine "Aufruf-Rückgabe"-Schnittstelle bezeichnet, bei der Parameter in Form von Eingabenachrichtendaten übergeben werden, sondern als "Weitergabe-Rückgabe"-Modell.
- Ein Nachrichtenfluss in WebSphere Message Broker ist von vornherein threadsicher, und Nachrichtenflüsse können gleichzeitig mit mehreren Threads ausgeführt werden.
Wenn Sie beispielsweise Nachrichten mit einem benutzerdefinierten Knoten verarbeiten und gleichzeitig einen benutzerdefinierten Parser für die Syntaxanalyse ankommender Nachrichten verwenden, enthalten Knoten und Parser Implementierungsfunktionen. Der Broker ruft diese Implementierungsfunktionen, oder Rückrufe, immer dann auf, wenn ein besonderes Ereignis eintritt.
Wird im Broker in diesem Eingabeknoten eine Eingabenachricht empfangen, wird sie an den benutzerdefinierten Knoten gesendet.
- Im Fall von Knoten in C ruft der Broker für den benutzerdefinierten Knoten die Funktion cniEvaluate auf. Informationen zur Funktion cniEvaluate finden Sie unter cniCreateNodeContext.
- Im Fall von Knoten in Java ruft der Broker die Methode evaluate auf,
die vom betreffenden benutzerdefinierten Knoten implementiert ist.
Um die Nachricht abzufragen, um festzustellen, wie mit ihr verfahren werden soll, ruft der Knoten eine C-Dienstprogrammfunktion oder eine Java-Methode auf (je nachdem, in welcher Programmiersprache der Knoten erstellt wurde). Der Broker ruft dann über eine der Implementierungsfunktionen den benutzerdefinierten Parser auf. Dadurch wird der Parser angewiesen, mit der Erstellung des WebSphere Message Broker-Syntaxanalysebaums zu beginnen.
Der Parser erstellt diesen Strukturbaum über den Aufruf von Dienstprogrammfunktionen, die die Elemente dieses Syntaxanalysebaums erstellen. Der Parser kann vom Broker mehrmals, nicht nur einmal, aufgerufen werden.