Mustercode 'TCPIP Client Nodes' ausführen
Sobald Sie den Mustercode importiert und implementiert haben, können Sie ihn
ausführen. Beachten Sie dabei die Anweisungen in den Abschnitten
Asynchronen Mustercode ausführen
und
Synchronen Mustercode ausführen.
Informationen zu den Datenstromsteuerungsoptionen, die auf der Registerkarte Erweitert verfügbar sind, finden Sie im Abschnitt
Erweiterte Optionen.
Im Abschnitt TCP/IP-Übersicht der Dokumentation zu WebSphere Message Broker finden Sie eine Übersicht über die Funktionsweise und Konfiguration dieser Knoten.
Dieser Mustercode kann auch für die Kommunikation mit einem separaten
TCP/IP-Server erweitert werden. Weitere Informationen finden Sie im Abschnitt
Mustercode 'TCPIP Client Nodes' erweitern.
Sollten bei der Ausführung des Mustercodes Probleme auftreten, lesen Sie den Abschnitt Probleme bei der Ausführung von Mustercodes beheben in der WebSphere Message Broker-Dokumentation.
In diesem Mustercode werden die Nachrichtenflüsse 'TCPIPAsyncIn', 'TCPIPAsyncOut'
und 'TCPIPServerSimulation' verwendet.
So führen Sie das Beispielprogramm aus:
- Erweitern Sie in der Ansicht 'Brokerentwicklung' das
Projekt 'TCPIPClientNodesSampleFlowProject'.
- Erweitern Sie das Verzeichnis Flow Tests und klicken Sie doppelt auf TCPIPAsyncTest.mbtest, um die Nachricht in einem Testclient zu öffnen.
Klicken Sie auf In Warteschlange einreihen.
- Klicken Sie im Fenster mit den Detaileigenschaften auf Nachricht senden.
Die folgenden Ereignisse treten ein:
- Eine WebSphere MQ-Anforderungsnachricht wird in die Warteschlange
'TCPIP_ASYNC_IN' eingereiht.
Die Anforderung wird vom Nachrichtenfluss 'TCPIPAsyncOut'
gelesen.
- Der JavaCompute-Knoten überprüft, ob der Hostname und die Portnummer des
Servers im Nachrichtenhauptteil angegeben sind. Diese Felder wurden noch nicht
festgelegt, sodass die Überprüfung durch den JavaCompute-Knoten keine Auswirkungen hat.
Ein
Beispiel für die Verwendung dieses JavaCompute-Knotens finden Sie im Abschnitt
Mustercode 'TCPIP Client Nodes' erweitern.
- Die Nachricht wird mithilfe des TCPIPClientOutput-Knotens vom Port 7777
gesendet.
Auf
der Registerkarte Request (Anforderung) dieses
Knotens wird für die Eigenschaft Position für Antwort-ID, die dieser
TCP/IP-Verbindung zugeordnet ist, der Wert 'ReplyToQ' festgelegt.
- Der TCPIPServerInput-Knoten im Nachrichtenfluss 'TCPIPServerSimulation' ist am
Port 7777 empfangsbereit und akzeptiert die Verbindung vom TCPIPClientOutput-Knoten.
- Der Nachrichtenfluss 'TCPIPServerSimulation' ändert die Nachricht, indem er
<ServerUpdate>OK</ServerUpdate>
hinzufügt, und sendet die Nachricht zurück an den Port 7777.
- Der TCPIPClientInput-Knoten im Nachrichtenfluss 'TCPIPAsyncIn' empfängt die
Daten.
Der TCPIPClientInput-Knoten setzt die Eigenschaft für die WebSphere
MQ-ReplyTo-Warteschlange von der Antwort-ID, die der Verbindung zugeordnet ist, wieder
zurück.
- Die Nachricht wird über einen MQReply-Knoten zurück geleitet.
- Klicken Sie auf Aus Warteschlange entfernen.
- Klicken Sie im Fenster 'Ausführliche Eigenschaften' auf
Nachricht abrufen.
- Überprüfen Sie, ob die aktualisierte Nachricht erfolgreich über WebSphere MQ
zurückgesendet wurde:
- Rufen Sie die Antwortnachricht im Fenster 'Ausführliche Eigenschaften'
mithilfe des XML-Struktur-Viewers auf.
- Vergleichen Sie die Antwortnachricht mit der Nachricht, die ursprünglich
durch das Ereignis des Einreihens in die Warteschlange gesendet wurde.
Das Element
<ServerUpdate>OK</ServerUpdate> wurde dem Headerabschnitt des
Nachrichtenhauptteils hinzugefügt.
Wenn alle vorherigen Schritte erfolgreich ausgeführt wurden, ist der Mustercode
damit beendet.
Sie können die Knoten in den drei Nachrichtenflüssen anzeigen, um nachzuvollziehen, wie die Ergebnisse erzielt wurden.
In diesem Mustercode werden die Nachrichtenflüsse 'TCPIPSync' und
'TCPIPServerSimulation' verwendet.
So führen Sie das Beispielprogramm aus:
- Im asynchronen und synchronen Teil dieses Mustercodes wird dieselbe
Portnummer verwendet. Deshalb müssen Sie sicherstellen, dass für den synchronen
Mustercode die richtigen Nachrichtenflüsse implementiert werden:
- Wählen Sie im WebSphere Message Broker Toolkit die Ansicht 'Broker' aus.
- Klicken Sie mit der rechten Maustaste auf TCPIPClientNodesSampleExecutionGroup und klicken Sie auf Löschen > Alle Nachrichtenflüsse und Ressourcen.
- Wählen Sie TCPIPClientNodesSampleArchive.bar aus und öffnen Sie die Datei.
Heben
Sie auf der Registerkarte Vorbereiten die Auswahl der
Nachrichtenflüsse 'TCPIPAsyncIn' und 'TCPIPAsyncOut' auf und wählen Sie stattdessen den
Nachrichtenfluss 'TCPIPSync' aus.
Stellen Sie sicher, dass der
Nachrichtenfluss 'TCPIPServerSimulation' und das Projekt
'TCPIPClientNodesSampleJavaProject' immer noch ausgewählt sind.
- Klicken Sie auf Erstellen und speichern..., um die BAR-Datei zu speichern.
- Ziehen Sie die BAR-Datei auf 'TCPIPClientNodesSampleExecutionGroup'.
- Vergewissern Sie sich, dass die folgenden Objekte implementiert wurden:
- Nachrichtenfluss 'TCPIPSync'
- Nachrichtenfluss 'TCPIPServerSimulation'
- TCPIPClientNodesSampleJavaProject
- Erweitern Sie in der Ansicht 'Brokerentwicklung' das Projekt
'TCPIPClientNodesSampleFlowProject'.
- Erweitern Sie das Verzeichnis Flow Tests und klicken Sie doppelt auf TCPIPSyncTest.mbtest, um die Nachricht im Testclient zu öffnen.
Klicken Sie auf In Warteschlange einreihen.
- Klicken Sie im Fenster mit den Detaileigenschaften auf Nachricht senden.
Die folgenden Ereignisse treten ein:
- Eine WebSphere MQ-Anforderungsnachricht wird in die Warteschlange
'TCPIP_SYNC_IN' eingereiht.
Die Anforderung wird vom Nachrichtenfluss 'TCPIPSync'
gelesen.
- Die Nachricht wird mithilfe des TCPIPClientOutput-Knotens vom Port 7777
gesendet.
Anders als beim asynchronen Modell muss der Wert 'ReplyToQ' nicht explizit
gespeichert werden, weil er im gesamten Verlauf dieses Nachrichtenflusses unverändert
in der Nachrichtenbaumstruktur bleibt.
- Der TCPIPClientReceive-Knoten wartet auf Antwort vom Server.
- Der TCPIPServerInput-Knoten im Nachrichtenfluss 'TCPIPServerSimulation' ist am
Port 7777 empfangsbereit und akzeptiert die Verbindung vom TCPIPClientOutput-Knoten.
- Der Nachrichtenfluss 'TCPIPServerSimulation' ändert die Nachricht, indem er <ServerUpdate>OK</ServerUpdate> hinzufügt, und sendet die Nachricht zurück
an Port 7777.
- Der TCPIPClientReceive-Knoten im Nachrichtenfluss 'TCPIPSync' empfängt die
Daten.
Auf der Registerkarte Ergebnis diese Knotens wird
die Antwortnachricht explizit als Antwortelement in die ursprüngliche Nachricht
eingebettet.
- Die Nachricht wird über einen MQReply-Knoten zurück geleitet.
- Klicken Sie auf Aus Warteschlange entfernen.
- Klicken Sie im Fenster 'Ausführliche Eigenschaften' auf
Nachricht abrufen.
- Überprüfen Sie, ob die aktualisierte Nachricht erfolgreich über WebSphere MQ
zurückgesendet wurde:
- Rufen Sie die Antwortnachricht im Fenster 'Ausführliche Eigenschaften' mithilfe des XML-Struktur-Viewers auf.
- Vergleichen Sie diese Nachricht mit der Nachricht, die ursprünglich durch
das Ereignis des Einreihens in die Warteschlange gesendet wurde.
Die gesamte
Antwortnachricht wird als <Response>-Element dargestellt, das nach den ursprünglichen
Elementen 'Header', 'SaleList' und 'Trailer' in die Nachricht eingebettet ist.
Erweitern Sie diese Antwortnachricht; <ServerUpdate>OK</ServerUpdate> wurde zum Header-Bereich des Nachrichtenhauptteils hinzugefügt.
Wenn alle vorherigen Schritte erfolgreich ausgeführt wurden, ist der Mustercode
damit beendet.
Sie können die Knoten in den zwei Nachrichtenflüssen anzeigen, um
nachzuvollziehen, wie die Ergebnisse erzielt wurden.
Bei allen TCP/IP-Knoten sind auf der Registerkarte
Erweitert Datenstromsteuerungsoptionen verfügbar.
Die
folgenden Angaben bieten eine Übersicht über die Einstellungen, die im
Mustercode 'TCPIP Client Nodes' für die Datenstromsteuerungseigenschaften
festgelegt werden:
Nachrichtenfluss 'TCPIPAsyncOut'
- TCPIPClientOutput-Knoten
- Die Eigenschaft Änderung Eingabedatenstrom bleibt unverändert.
- Die Eigenschaft Änderung Ausgabedatenstrom ist reserviert für die
Verwendung durch die Knoten, die im Nachrichtenfluss nach diesem Knoten folgen.
Dieser
bestimmte Datenstrom kann von keinen anderen Instanzen des Nachrichtenflusses verwendet
werden, bis der Datenstrom freigegeben wird.
Nachrichtenfluss 'TCPIPAsyncIn'
- TCPIPClientInput-Knoten
- Die Eigenschaft Änderung Eingabedatenstrom bleibt unverändert.
- Die Eigenschaft Änderung Ausgabedatenstrom wird freigegeben.
Dieser
Datenstrom wurde abgeschlossen und wird deswegen erneut für den Pool freigegeben.
Nachrichtenfluss 'TCPIPSync'
- TCPIPClientOutput-Knoten
- Die Eigenschaft Änderung Eingabedatenstrom bleibt unverändert.
- Die Eigenschaft Änderung Ausgabedatenstrom ist reserviert für die
Verwendung durch die Knoten, die im Nachrichtenfluss nach diesem Knoten folgen, und wird
am Ende des Nachrichtenflusses freigegeben.
Der Nachrichtenfluss 'TCPIPSync'
funktioniert insofern anders als der Nachrichtenfluss 'TCPIPAsyncOut', als bei
'TCPIPSync' alle Verarbeitungsschritte (Eingabe und Ausgabe) in einem einzigen
Nachrichtenfluss und nicht für Eingabe und Ausgabe getrennt in verschiedenen
untergeordneten Nachrichtenflüssen ausgeführt werden.
Aufgrund dessen kann der
Zeitpunkt für die Freigabe der Verbindung explizit konfiguriert werden.
- TCPIPClientReceive-Knoten
- Die Eigenschaft Änderung Eingabedatenstrom bleibt unverändert.
- Die Eigenschaft Änderung Ausgabedatenstrom bleibt unverändert.
Dieser
Datenstrom ist im TCPIPClientOutput-Knoten konfiguriert und muss nicht explizit im TCPIPClientReceive-Knoten freigegeben werden.
Nachrichtenfluss 'TCPIPServerSimulation'
- TCPIPServerInput-Knoten
- Die Eigenschaft Änderung Eingabedatenstrom ist reserviert und wird am
Ende des Nachrichtenflusses freigegeben.
Neue Clients können keine Verbindung über
diesen bestimmten Datenstrom herstellen, bis die Verarbeitung abgeschlossen ist.
- Die Eigenschaft Änderung Ausgabedatenstrom bleibt unverändert.
- TCPIPServerOutput-Knoten
- Die Eigenschaft Änderung Eingabedatenstrom bleibt unverändert.
Eine
Änderung dieser Eigenschaft ist nicht erforderlich, weil die
Verarbeitungsweise für diesen Datenstrom bereits im TCPIPServerInput-Knoten konfiguriert
ist.
- Die Eigenschaft Änderung Ausgabedatenstrom bleibt unverändert.
Zurück zum Beginn des
Mustercodes