WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Lebenszyklus von benutzerdefinierten Empfangsknoten in C

Ein benutzerdefinierter Empfangsknoten, der in der Programmiersprache C geschrieben wurde, wird während seiner Lebensdauer in mehreren Phasen verarbeitet.

Folgende Phasen werden im Lebenszyklus durchlaufen:

Registrierung

In der Registrierungsphase ermittelt der Broker, welche Ressourcen verfügbar sind und welche LIL-Dateien diese bereitstellen. In diesem Fall handelt es sich bei den verfügbaren Ressourcen um Knoten. Diese Phase beginnt mit dem Start einer Ausführungsgruppe. Beim Start einer Ausführungsgruppe werden die LIL-Dateien geladen. Der Broker untersucht sie darauf, welche Ressourcen sie bereitstellen können.

In der Registrationsphase wird eine CciFactory-Struktur erstellt, wenn der benutzerdefinierte Knoten cniCreateNodeFactory aufruft.

Folgende APIs ruft der Broker in dieser Phase auf:
  • biGetMessageflowNodeFactory
  • bipGetParserFactory
Folgendes API wird in dieser Phase vom benutzerdefinierten Knoten aufgerufen:
  • cniCreateNodeFactory

Instanzerstellung

Eine Instanz eines benutzerdefinierten Empfangsknotens wird erstellt, wenn mit dem Befehl mqsistart der Ausführungsgruppenprozess gestartet bzw. erneut gestartet wird bzw. ein mit dem Knoten verknüpfter Nachrichtenfluss implementiert wird.

Im Verlauf dieser Phase werden die folgende APIs aufgerufen:
  • cniCreateNodeContext. Diese API legt Speicher für die Instanzen des benutzerdefinierten Knotens an, in dem die Werte für die konfigurierten Attribute abgelegt werden. Diese API wird für jeden Nachrichtenfluss, der den benutzerdefinierten Empfangsknoten verwendet, einmal aufgerufen.
  • cniCreateInputTerminal. Diese API wird innerhalb der API cniCreateNodeContext aufgerufen und teilt dem Broker mit, über welche Eingabeterminals der benutzerdefinierte Empfangsknoten verfügt (sofern verfügbar).

    Der benutzerdefinierte Empfangsknoten verfügt nur über Eingabeterminals, wenn er auch als Nachrichtenverarbeitungsknoten fungiert. In diesem Fall sollte möglichst ein separater benutzerdefinierter Nachrichtenverarbeitungsknoten die Nachrichtenverarbeitung übernehmen, statt beide Operationen von einem hierdurch komplexeren Knoten durchführen zu lassen.

  • cniCreateOutputTerminal. Diese API wird innerhalb der API cniCreateNodeContext aufgerufen und teilt dem Broker mit, über welche Ausgabeterminals der benutzerdefinierte Empfangsknoten verfügt.
  • cniSetAttribute. Diese API wird vom Broker aufgerufen, um die Werte für die konfigurierten Attribute des benutzerdefinierten Knotens zu setzen.

In dieser Phase wird beim Aufruf von cniCreateTerminal die Struktur 'CciTerminal' erstellt.

Verarbeitung

Die Verarbeitungsphase beginnt mit dem Aufruf der Funktion cniRun durch den Broker. Der Broker ermittelt anhand der Funktion cniRun, wie eine Nachricht verarbeitet werden muss; dazu gehört auch die Ermittlung der Domäne, in der eine Nachricht definiert ist, und der Aufruf des entsprechenden Parsers für diese Domäne.

Vom Thread-Pool des Nachrichtenflusses wird ein Thread angefordert und in der 'run'-Methode des Empfangsknotens gestartet. Der Thread stellt eine Verbindung zum Warteschlangenmanager des Brokers her und hält diese Verbindung über seine gesamte Lebensdauer hinweg aufrecht. Nachdem ein Thread angelegt worden ist, geht der Knoten in eine Nachrichtenverarbeitungsschleife, solange er auf das Eintreffen einer Nachricht wartet. Er bleibt in der Schleife, bis eine Nachricht eingetroffen ist. Wenn der Nachrichtenfluss für die Verwendung mehrerer Threads konfiguriert ist, wird die Threadzuteilung aktiviert.

Die Nachrichtendaten können jetzt weitergegeben werden.

Vom Broker wird während dieser Phase die folgende API aufgerufen:
  • cniRun. Diese Funktion wird vom Broker aufgerufen, um festzustellen, wie die Nachricht verarbeitet werden soll.
  • cniSetInputBuffer. Diese Funktion stellt einen Eingabepuffer zur Verfügung bzw. informiert den Broker darüber, wo sich dieser Puffer befindet, und ordnet diesen einem Nachrichtenobjekt zu.

Löschen

Ein benutzerdefinierter Eingabeknoten wird vernichtet, wenn der Nachrichtenfluss erneut implementiert bzw. wenn mit dem Befehl mqsistop der Ausführungsgruppenprozess gestoppt wird. Der Knoten kann durch Implementierung der Funktion cniDeleteNodeContext gelöscht werden.

Wird ein benutzerdefinierter Empfangsknoten auf einem dieser Wege gelöscht, sollten Sie den gesamten Speicher, der diesem Knoten zugeordnet ist, sowie alle von diesem Knoten verwendeten Ressourcen (wie beispielsweise Sockets) wieder freigeben.

Vom Broker wird während dieser Phase die folgende API aufgerufen:
  • cniDeleteNodeContext. Diese Funktion wird vom Broker zum Löschen der Empfangsknoteninstanz aufgerufen.
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:21:57


KonzeptthemaKonzeptthema | Version 8.0.0.5 | as01391_