Verwenden Sie den
FileInput-Knoten zum Lesen einer Datei, die sich in
einem Verzeichnis auf einem fernen FTP oder SFTP-Server befindet, und
zur Weiterleitung von Nachrichten, die auf dem Inhalt dieser Datei basieren.
Bevor Sie beginnen:Dieses Beispiel ist eine Erweiterung des
Beispiels im Abschnitt
Lokale Datei als Eingabe für Nachrichtenfluss verwenden und beschreibt die Verwendung eines
FileInput-Knotens in einem Nachrichtenfluss. Bei den
Anweisungen wird vorausgesetzt, dass Sie ein
Windows-Betriebssystem verwenden und einen Nachrichtenfluss,
der einen
FileInput-Knoten enthält, erstellt haben. Sie benötigen
außerdem folgende Ressourcen:
- Einen FTP oder SFTP-Server. Stellen Sie sicher, dass ein
FTP oder SFTP-Server mit folgenden Einstellungen vorhanden ist:
- Server
- ftpserver.hursley.abc.com
- Port
- 21 (für FTP)
oder 22 (für SFTP)
- Arbeitsverzeichnis
- /ftpfileinput
- Benutzer-ID
- myuserid
- Kennwort
- mypassword
Diese Werte dienen nur zu
Demonstrationszwecken in diesem Beispiel. Falls Sie andere Werte verwenden möchten, sollten Sie
sich diese notieren, damit Sie bei Ausführung der Aufgabe die geeigneten Werte festlegen können.
- Eine Sicherheitsidentität. Definieren Sie mit dem Befehl
mqsisetdbparms eine
Sicherheitsidentität mit dem Namen myidentity für Ihre Benutzer- und
Kennwortdaten.
Wenn
Sie eine Verbindung mit einem FTP-Server herstellen möchten, muss die Sicherheitsidentität das
Präfix
ftp:: haben, damit die Dateiknoten die Identitätsdefinition finden können. Verwenden Sie also beispielsweise für einen Broker namens
MyBroker folgenden
Befehl:
mqsisetdbparms MyBroker -n ftp::myidentity -u myuserid -p mypassword
Wenn Sie eine Verbindung mit einem SFTP-Server herstellen möchten, muss die Sicherheitsidentität
das Präfix
sftp:: haben, so wie im folgenden Beispiel gezeigt:
mqsisetdbparms MyBroker -n sftp::myidentity -u myuserid -p mypassword
Sie können eine Verbindung mit einem SFTP-Server auch für eine Authentifizierung über öffentliche
Schlüssel konfigurieren, indem Sie eine SSH-Identitätsdatei und einen Verschlüsselungstext statt
eines Kennworts angeben. Beispiel:
mqsisetdbparms MyBroker -n sftp::myidentity -u myuserid -i identity_file -r passphrase
Weitere Informationen zur Konfiguration von Verbindungen mit einem SFTP-Server finden Sie im
Abschnitt Dateien mit SFTP sicher übertragen.
- Eine Eingabedatei. Um diesem Beispielszenario folgen zu können, sollten Sie eine Eingabedatei mit dem Namen test_input1.xml und folgendem Inhalt erstellen:
<Message>test1</Message>
<Message>testzwei</Message>
<Message>testdrei</Message>
Jede Zeile muss mit einem Zeilenbegrenzer enden,
der zu dem Systems passt, auf dem sich der FTP oder
SFTP-Server befindet. Legen Sie diese Datei nicht im Eingabeverzeichnis ab, sondern stellen
Sie sie in das Verzeichnis /ftpfileinput auf dem
FTP oder SFTP-Server.
- Eine Nachrichtengruppe. In diesem Beispiel wird eine Nachrichtengruppe namens
xml1 verwendet, die den XMLNSC-Parser verwendet. Die Nachrichtengruppe xml1 modelliert Nachrichten mit dem folgenden Format:
<Message>...</Message>
Gehen Sie dazu wie folgt vor:
- Legen Sie für den FileInput-Knoten die erforderlichen Knoteneigenschaften fest. Die folgende Tabelle enthält eine Übersicht über die Eigenschaften des
FileInput-Knotens, die Sie festlegen müssen. Außerdem
ist angegeben, auf welcher Registerkarte die Eigenschaften angezeigt werden, ob es sich um
obligatorische Eigenschaften handelt und wie die erforderlichen Werte lauten.
Registerkarte |
Eigenschaft |
Wert |
Grundeinstellung |
Eingabeverzeichnis |
C:\FileInput\TestDir Wenn kein Eingabeverzeichnis vorhanden ist, werden keine Dateien verarbeitet, selbst wenn Sie Dateien über FTP oder SFTP verarbeiten.
|
Dateiname oder Muster |
test_input1.xml |
Maßnahme bei erfolgreicher Verarbeitung |
In Unterverzeichnis des Archivs verschieben |
Doppelt vorhandene Archivdateien ersetzen |
Ausgewählt |
Syntaxanalyse der Eingabenachricht |
Nachrichtendomäne |
XMLNSC |
Nachrichtenmodell |
xml1 |
Abfrage |
Abfrageintervall |
3 |
Wiederholung |
Maßnahme bei fehlschlagender Datei |
Zeitmarke hinzufügen und in Unterverzeichnis für Zurücksetzung verschieben |
Datensätze und Elemente |
Datensatzerkennung |
Mit Begrenzer |
Begrenzer |
DOS- oder UNIX-Linienende |
Begrenzertyp |
Postfix |
FTP |
Fernübertragung |
Ausgewählt |
Übertragungsprotokoll |
FTP oder
SFTP |
Ferner Server und
Port |
ftpserver.hursley.abc.com |
Sicherheitsidentität |
myidentity |
Serververzeichnis |
/ftpfileinput |
Übertragungsmodus |
ASCII (nur
für FTP) |
Scan-Verzögerung |
45 |
Falls Sie für die FTP oder SFTP-Serverressource andere Werte
eingestellt haben, geben Sie die betreffenden Werte ein. Die hier verwendeten Einstellungen sind
identisch mit den Einstellungen des Beispiels im Abschnitt Lokale Datei als Eingabe für Nachrichtenfluss verwenden,
außer dass die Eigenschaft
Fernübertragung
ausgewählt wurde und die Registerkarte FTP nun Eigenschaften enthält.
Wenn
Sie die Eigenschaft
Fernübertragung
inaktivieren, verhält sich der Knoten wie im Beispiel im Abschnitt
Lokale Datei als Eingabe für Nachrichtenfluss verwenden. Die Eigenschaften auf der Registerkarte
FTP bleiben zwar erhalten, werden aber ignoriert.
- Implementieren Sie den Nachrichtenfluss auf dem Broker. Weitere Informationen hierzu finden Sie unter Verpacken und implementieren.
Bei der Ausführung dieser Schritte geschieht Folgendes:
- Die Datei test_input1.xml wird aus dem Verzeichnis auf dem
FTP oder SFTP-Server (/ftpfileinput) in
das lokale Verzeichnis (C:\FileInput\TestDir) übertragen.
Danach wird die
Datei aus dem Verzeichnis auf dem FTP oder SFTP-Server
gelöscht.
- Der FileInput-Knoten erkennt Datensätze auf Basis
von DOS- oder UNIX-Zeilenendezeichen und erstellt für jeden gefundenen Datensatz eine eigene
Nachricht, wie durch die Eigenschaften auf der Registerkarte Datensätze und
Elemente definiert.
Der Knoten leitet drei Nachrichten an den Nachrichtenfluss weiter,
der an das Ausgangsterminal angeschlossen ist:
- Wenn dem Datenendterminal ein Knoten zugeordnet ist, wird nach der Verarbeitung des letzten
Datensatzes der Datei eine Datenendnachricht weitergegeben.
- Nach Beendigung der Verarbeitung wird die Datei test_input1.xml in das
mqsiarchive-Unterverzeichnis
C:\FileInput\TestDir\mqsiarchive verschoben.
Falls das Archivverzeichnis mqsiarchive bereits eine Datei mit dem Namen
test_input1.xml enthält, wird diese durch die neue Datei überschrieben.
- Im Falle eines Scheiterns des Nachrichtenflusses wird versucht, die Verarbeitung unter
Berücksichtigung der für die Eigenschaften des
FileInput-Knotens festgelegten Werte zu wiederholen. In
diesem Beispielvorgang wird dem Dateinamen eine Zeitmarke hinzugefügt, und die Datei wird in das
Verzeichnis mqsibackout verschoben. Hier ein Beispiel für den Pfad einer solchen Datei: C:\FileInput\TestDir\mqsibackout\20070928_150234_171021_test_input1.xml.
Wenn auf der FTP-Seite der Zugriff verweigert wird, wird eine Datei mit 0 Byte erstellt und in das
Verzeichnis 'mqsibackout' gestellt.
Es wird für jeden fehlgeschlagenen FTP-Versuch eine Datei mit
0–Byte im Verzeichnis 'mqsibackout' erstellt.
Da die Eigenschaft
Fernübertragung
ausgewählt ist, setzt die FTP-Scanverzögerung von 45 Sekunden das Abfrageintervall von 3 Sekunden
außer Kraft.
Weitere Informationen finden Sie im Abschnitt
Aufteilung von Dateien in Datensätze steuern, in dem beschrieben wird, wie sich andere
Einstellungskombinationen der Eigenschaften
Datensatzerkennung,
Begrenzer und
Begrenzertyp des
FileInput-Knotens auswirken.
Auch die folgenden Abschnitte enthalten Beispiele für die Verwendung dieses Knotens:
Informationen zu Beispielen können nur bei Verwendung des in das WebSphere Message
Broker Toolkit integrierten bzw. online verfügbaren Information Center angezeigt werden. Muster können nur ausgeführt werden, wenn das im
WebSphere Message
Broker Toolkit integrierte Information Center verwendet wird.