WebSphere Message Broker implementiert den Zugriff auf die TCP/IP-Eingabedatenströme und -Ausgabedatenströme über eine Folge von Knoten.
Es gibt zwei Gruppen von TCP/IP-Knoten: TCPIPServer-Knoten und TCPIPClient-Knoten. Was den Zugriff auf die Datenströme anbelangt, funktionieren beide Gruppen gleich; eine Gruppe verwendet jedoch Clientverbindungen, die andere Serververbindungen. Das heißt, die Knoten stellen die Verbindungen auf unterschiedliche Weise her, verwenden die Datenströme auf auf dieselbe Art und Weise, nachdem die Verbindungen hergestellt wurden.
Der Hauptunterschied zwischen den Eigenschaften der Knoten ist, dass die TCPIPServer-Knoten keine Änderung des Hostnamens zulassen (weil es sich immer um localhost handeln muss). Alle TCPIPServer-Knoten, die denselben Port verwenden, müssen derselben Ausführungsgruppe angehören, weil der Port an den aktiven Prozess gebunden ist. TCPIPClient-Knoten an demselben Port können in verschiedenen Ausführungsgruppen verwendet werden, aber Clientverbindungen können nicht gemeinsam genutzt werden, weil sie an eine bestimmte Ausführungsgruppe, die einem Prozess zugeordnet ist, gebunden sind. Innerhalb der beiden Knotengruppen (TCPIPClient und TCPIPServer) gibt es drei Knotentypen:
Die Empfangsknoten greifen auf den Eingabedatenstrom zu, um Daten abzurufen, und die Sendeknoten greifen auf den Ausgabedatenstrom zu, um Daten zu senden. Es kann kein einzelner Knoten gleichzeitig auf beide Datenströme zugreifen. Um auf beide Datenströme gleichzeitig zuzugreifen, müssen mehrere Knoten in einem Nachrichtenfluss miteinander verbunden werden.
Konfigurierbare Services für TCPIPServer-Knoten und für TCPIPClient-Knoten müssen von einem Administrator vordefiniert werden. Der Administrator definiert die konfigurierbaren TCP/IP-Services, wenn er den Broker für einen Test oder für die Produktion konfiguriert. Konfigurierbare TCP/IP-Services müssen definiert werden, bevor ein Nachrichtenfluss, der sie verwendet, implementiert wird; dies gilt auch für eine Testumgebung. Der Abschnitt Eigenschaften für TCP/IP konfigurieren enthält weitere Informationen hierzu.
Der Empfangsknoten ermöglicht den Zugriff auf den Eingabedatenstrom einer Verbindung. Der Knoten wird durch den Eingang von Daten in den Datenstrom aktiviert und beginnt mit der Verarbeitung des Nachrichtenflusses. Der Empfangsknoten steuert das Thread- und Transaktionsmanagement. Zwar sind TCP/IP-Knoten in ihrer Interaktion mit TCP/IP nicht transaktionsorientiert, jedoch können andere Knoten in demselben Fluss transaktionsorientiert sein (z. B. WebSphere MQ-Knoten). Der Empfangsknoten erstellt nicht für jede verwendete Verbindung einen Thread, sondern erst, wenn zwei Voraussetzungen erfüllt sind.
Beispielsweise kann ein einziger Empfangsknoten mit nur einer zusätzlichen Instanz 1.000 TCP/IP-Verbindungen verarbeiten. Diese Situation ist möglich, da der Knoten die Verbindungen nicht abfragt, sondern ausgelöst wird, wenn die angegebenen Bedingungen erfüllt sind.
Der Receive-Knoten wird aktiviert, um Daten von einer Verbindung zu lesen, sobald eine Nachricht sein Eingangsterminal erreicht. Er wartet darauf, dass Daten ankommen, und sendet sie dann an das Ausgangsterminal. Der Receive-Knoten kann so konfiguriert werden, dass er eine bestimmte Verbindung verwendet (indem eine Verbindungs-ID angegeben wird) oder dass er eine beliebige verfügbare Verbindung verwendet. Ist der Knoten für eine beliebige verfügbare Verbindung konfiguriert, empfängt er Daten von der ersten Verbindung, auf der Daten verfügbar sind.
Der Sendeknoten sendet Daten an eine Verbindung. Er wird durch eine Nachricht aktiviert, die an seinem Eingangsterminal ankommt, und sendet die in der Nachricht enthaltenen Daten dann an den Datenstrom. Dieselbe Nachricht, die im Knoten empfangen wird, wird an das Ausgangsterminal gesendet.
Die sechs Client- und Serverknoten können kombiniert werden, um komplexere Operationen bereitzustellen. Wenn beispielsweise auf einen Sendeknoten ein Receive-Empfangsknoten folgt, ist eine synchrone Anforderung von Daten möglich.
Jede Verbindung besitzt eine eindeutige Kennung, die ihr beim Verbindungsaufbau zugeordnet wird. Immer wenn ein Knoten eine Verbindung verwendet, wird die verwendete ID in die lokale Umgebung geschrieben. Alle Knoten, die die Verbindung später im Nachrichtenfluss verwenden, können auf dieselbe Verbindung zugreifen, indem Sie die ID angeben; die Receive-Knoten und die Sendeknoten finden die ID, indem sie an einer angegebenen Position in der lokalen Umgebung suchen. Standardmäßig unterscheidet sich die Position, an die ein Knoten seine Verbindungsdetails schreibt, von der Position, an der der nächste Knoten nach einer verwendbaren ID sucht. In der Knotenkonfiguration kann festgelegt werden, dass die von einem vorherigen Knoten gesendete ID verwendet werden soll. So kann beispielsweise die im Abschnitt Knoten kombinieren dargestellte Kombination aus Sende- und Receive-Empfangsknoten so konfiguriert werden, dass der Receive-Empfangsknoten die WrittenDestination-Daten aus dem vorhergehenden Sendeknoten verwendet.
Die Verwendung der ID ermöglicht es einer Folge von Knoten, auf dieselbe Verbindung zuzugreifen, verhindert jedoch nicht, dass zwei Nachrichtenfluss-Threads auf dieselbe Verbindung zugreifen. Wird eine Verbindung zum ersten Mal verwendet, kann sie reserviert werden, sodass andere Knoten nur darauf zugreifen können, wenn sie die ID kennen. Beispielsweise wird bei der unter Knoten kombinieren gezeigten Kombination aus Sendeknoten und Receive-Knoten die Verbindung reserviert, sodass andere Threads nicht darauf zugreifen können, bevor der Receive-Knoten sie verwendet hat. Standardmäßig gibt der Receive-Knoten die Verbindung nach der Verwendung frei.
Dank der Möglichkeit, Verbindungen zu reservieren (auf die dann unter Angabe der korrekten ID zugegriffen werden kann) können Sie komplexe Interaktionen mit TCP/IP-Verbindungen aufbauen, die komplette Nachrichtenflüsse und sogar mehrere Nachrichtenflüsse umfassen können. Auf diese Weise können TCP/IP-Interaktionen zusammen mit anderen asynchronen Transportmechanismen wie WebSphere MQ verwendet werden.
Reservierte Verbindungen müssen irgendwann freigegeben werden, weil sie sonst nie mehr verfügbar sind. Weitere Informationen zu reservierten und verfügbaren Verbindungen finden Sie im Abschnitt Verbindungsmanagement.
Die TCP/IP-Knoten können in asynchronen Mustern verwendet werden, in denen Daten über einen TCP/IP-Sendeknoten gesendet und über einen TCP/IP-Empfangsknoten wieder empfangen werden. Die Tatsache, dass zwei Nachrichtenflüsse umfasst werden, führt dazu, dass jeder Status im ersten Nachrichtenfluss verlorengeht und der zweite Nachrichtenfluss somit nicht darauf zugreifen kann. Mithilfe der TCP/IP-Knoten können Sie Antwortdetails in einer Verbindung speichern, die dann dem Empfangsknoten zur Verfügung stehen, wenn in derselben Verbindung ein neues Ereignis ankommt. Standardmäßig werden diese Daten der lokalen Umgebung entnommen, aber Sie können die Knoten so konfigurieren, dass sie die Daten von einer beliebigen Position abrufen, einschließlich des Feldes 'CorrelId' und der Nachrichten-IDs in WebSphere MQ-Headern.