Datei in einem fernen FTP-, FTPS- oder SFTP- Verzeichnis lesen

Verwenden Sie einen FileInput -Knoten, um eine Datei in einem Verzeichnis auf einem fernen FTP-, FTPS- oder SFTP- Server zu lesen und anschließend Nachrichten weiterzugeben, die auf dem Inhalt dieser Datei basieren.

Vorbereitungen

Dieses Beispiel ist eine Erweiterung des Beispiels im Abschnitt Lokale Datei als Eingabe für Ihren 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 erstellt haben, der einen FileInput -Knoten enthält. Sie benötigen außerdem folgende Ressourcen:
  • Einen FTP-, FTP- oder SFTP- Server. Stellen Sie sicher, dass ein FTP-, FTPS- oder SFTP-Server mit folgenden Einstellungen vorhanden ist:
    Server
    ftpserver.hursley.abc.com
    Portierung
    21 (für FTP oder FTPS) oder 22 (für SFTP)
    Arbeitsverzeichnis
    /ftpfileinput
    Benutzer-ID
    Benutzer-ID
    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. Mit dem Befehl mqsisetdbparms können Sie eine Sicherheitsidentität namens myidentity für Ihre Benutzer-und Kennwortdetails definieren.
    Wenn Sie eine Verbindung zu einem FTP-oder FTPS-Server herstellen möchten, muss die Sicherheitsidentität das Präfix ftp:: haben, damit die Dateiknoten die Identitätsdefinition finden können. Verwenden Sie beispielsweise folgenden Befehl:
        mqsisetdbparms workDir -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 -w workDir -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 eine Kennphrase statt eines Kennworts angeben. Zum Beispiel:
        mqsisetdbparms -w workDir -n sftp::myidentity -u myuserid -i identity_file -r passphrase

    Um zu überprüfen, welche Sicherheitsberechtigungsnachweise bereits festgelegt sind, verwenden Sie den Befehl mqsireportdbparms . Weitere Informationen finden Sie unter Kennwort für eine Ressource überprüfen, die von einem Integrationsserver verwendet wird.

    Weitere Informationen zum Konfigurieren von Verbindungen zu einem SFTP-Server finden Sie unter Dateien sicher über SFTP ü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>testtwo</Message>
    <Message>testthree</Message>
    Jede Zeile endet mit einem Zeilenabschlusszeichen, das für das System geeignet ist, auf dem sich der FTP-, FTPS- oder SFTP -Server befindet. Stellen Sie diese Datei nicht in das Eingabeverzeichnis, sondern im FTP-, FTPS- oder SFTP- Serververzeichnis /ftpfileinput.
  • 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>

Informationen zu dieser Task

Führen Sie die folgenden Schritte aus:

Vorgehensweise

  1. Legen Sie die erforderlichen Knoteneigenschaften im FileInput -Knoten fest.
    In der folgenden Tabelle sind die Eigenschaften des FileInput -Knotens, die Sie festlegen müssen, die Registerkarte, auf der sie angezeigt werden, ob sie obligatorisch sind, und die erforderlichen Werte zusammengefasst.
    Registerkarte Eigenschaft Wert
    Basis Eingabeverzeichnis C:\FileInput\TestDir

    Wenn kein Eingabeverzeichnis vorhanden ist, werden keine Dateien verarbeitet, selbst wenn Sie Dateien über FTP, FTPS 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
    Parsing 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-Zeilenende
    Begrenzertyp Postfix
    FTP Fernübertragung Ausgewählt
    Übertragungsprotokoll FTPoder SFTPoder FTPS
    Ferner Server und Port ftpserver.hursley.abc.com
    Sicherheitsidentität meine Identität
    Serververzeichnis /ftpfileinput
    Übertragungsmodus ASCII (nur für FTP)
    Scan-Verzögerung 45
    Wenn Sie andere Werte für Ihre FTP-, FTPS- oder SFTP- Serverressource verwendet hatten, geben Sie diese Werte ein. Die hier verwendeten Einstellungen sind mit denen im Beispiel im Abschnitt Lokale Datei als Eingabe für Ihren Nachrichtenfluss verwendenidentisch, mit der Ausnahme, dass die Eigenschaft Fernübertragung ausgewählt wurde und jetzt Eigenschaften auf der Registerkarte FTP vorhanden sind. Wenn Sie die Eigenschaft Fernübertragung abwählen, funktioniert der Knoten wie im Beispiel unter Lokale Datei als Eingabe für Ihren Nachrichtenfluss verwenden. Die Eigenschaften auf der Registerkarte FTP bleiben festgelegt, werden aber ignoriert.
  2. Implementieren Sie den Nachrichtenfluss auf dem -Integrationsserver. Siehe Integrationslösungen implementieren.

Ergebnisse

Bei der Ausführung dieser Schritte geschieht Folgendes:
  1. Die Datei test_input1.xml wird aus dem FTP-, FTPS- oder SFTP -Serververzeichnis (/ftpfileinput) in das lokale Verzeichnis (C:\FileInput\TestDir) übertragen. Die Datei wird aus dem FTP-, FTPS- oder SFTP- Serververzeichnis gelöscht.
  2. Der FileInput -Knoten erkennt Datensätze, die mit einem DOS-oder UNIX-Zeilenende enden, und erstellt für jeden gefundenen Datensatz eine 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 Out-Terminal angeschlossen ist:
    • Nachricht 1:
      <Message>test1</Message>
    • Nachricht 2:
      <Message>testtwo</Message>
    • Nachricht 3:
      <Message>testthree</Message>
  3. Wenn dem End of Data-Terminal ein Knoten zugeordnet ist, wird nach der Verarbeitung des letzten Datensatzes der Datei eine Datenendnachricht weitergegeben.
  4. 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.
  5. Wenn der Nachrichtenfluss fehlschlägt, wird die Verarbeitung entsprechend den Werten, die in den Eigenschaften des FileInput -Knotens festgelegt sind, wiederholt. 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. Für jeden fehlgeschlagenen FTP-Versuch wird 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.

Nächste Schritte

Weitere Informationen finden Sie im Abschnitt Trennung von Dateien in Datensätze steuern, in dem die Auswirkungen der Angabe anderer Kombinationen von Werten in den Eigenschaften Datensatzerkennung, Begrenzerund Begrenzertyp des FileInput -Knotens dargestellt werden.