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.
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 wird eine CciTerminal-Struktur erstellt. Diese Struktur wird beim Aufruf von 'cniCreateTerminal' erstellt.
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. In der Schleife bleibt er, 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.
Vernichtet wird ein benutzerdefinierter Empfangsknoten, wenn der Nachrichtenfluss erneut implementiert wird bzw. wenn mit 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.