Scrittura di un file su un server FTP, FTPS o SFTP remoto

Utilizzare un nodo FileOutput per scrivere un file in una directory su un server FTP, FTPS o SFTP remoto.

Prima di iniziare

Questo esempio mostra il modo in cui una combinazione di valori nelle proprietà Definizione record, Delimitatore e Tipo di delimitatore porterà alla creazione di un file da più messaggi. L'esempio è un'estensione dell'esempio descritto in Scrittura di un file nel proprio filesystem localee descrive l'utilizzo di un nodo FileOutput in un flusso di messaggi.

Queste istruzioni presumono che si stia utilizzando un sistema Windows e che sia già stato creato un flusso di messaggi contenente un nodo FileOutput . Sono necessarie anche le seguenti risorse:

  • Un server FTP o SFTP . Accertarsi che esista un server FTP o SFTP con le seguenti impostazioni, in modo da poter seguire questo scenario di esempio:
    Server
    ftpserver.hursley.abc.com
    Porta
    21 (per FTP o FTPS) o 22 (per SFTP)
    Directory di lavoro
    /ftpfileoutput
    ID utente
    myuserid
    Password
    mypassword

    Questi valori sono solo esemplificativi. Se si utilizzano altri valori, registrarli in modo da poter impostare i valori appropriati quando si seguono le istruzioni riportate in questa attività.

  • Una identità di sicurezza. Utilizza il comando mqsisetdbparms per definire un'identit ... di protezione denominata myidentity per i dettagli di utente e password.
    Se si desidera connettersi a un server FTP o FTPS, l'identità di sicurezza deve avere un prefisso ftp:: , per consentire ai nodi di file di trovare la definizione di identità. Ad esempio:
        mqsisetdbparms -w workDir -n ftp::myidentity -u myuserid -p mypassword
    Per connettersi a un server SFTP, è necessario che l'identità di sicurezza disponga di un prefisso sftp::, come mostrato nel seguente esempio:
        mqsisetdbparms -w workDir -n sftp::myidentity -u myuserid -p mypassword
    È possibile inoltre configurare una connessione a un server SFTP per utilizzare un'autenticazione con chiave pubblica, specificando un file di identità SSH e una passphrase, invece di una password. Ad esempio:
        mqsisetdbparms -w workDir -n sftp::myidentity -u myuserid -i identity_file -r passphrase

    Per controllare quali credenziali di sicurezza sono già impostate, utilizzare il comando mqsireportdbparms ; consultare Controllo della password per una risorsa utilizzata da un server di integrazione.

    Per ulteriori informazioni sulla configurazione delle connessioni a un server SFTP, consultare Trasferimento dei file in modo sicuro utilizzando SFTP.

  • I seguenti messaggi, che devono essere prodotti dal flusso di messaggi che precede il nodo FileOutput :
    • Tre messaggi di input. Questi messaggi vengono inviati, in questo ordine, al terminale In del nodo FileOutput :
      • Messaggio 1:
        <Message>test1</Message>
      • Messaggio 2:
        <Message>testtwo</Message>
      • Messaggio 3:
        <Message>testthree</Message>
      Questi messaggi possono essere prodotti, ad esempio, dal dominio XMLNSC con una serie di messaggi che riconosce XML, nel seguente formato:
      <Message>...</Message>
    • Un messaggio finale inviato al terminale Finish File del nodo FileOutput dopo l'invio dei primi tre messaggi:
      <thiscanbe>anything</thiscanbe>
Completare i seguenti passi:

Procedura

  1. Impostare le proprietà del nodo richieste sul nodo FileOutput .
    La seguente tabella riepiloga le proprietà del nodo FileOutput da impostare, le schede su cui vengono visualizzate e i valori utilizzati in questo esempio:
    Scheda Proprietà Valore
    Base Directory C:\FileOutput\TestDir
    Nome file o modello test_output1.xml
    Modalità per scrivere nel file Stage in directory di transito e spostamento nella directory di output su File Finish
    Azione se il file esiste Valore data/ora, Archivia e sostituisci file esistente
    Sostituisci file di archivio duplicati Selezionato
    Record ed elementi Definizione record Il record è Dati delimitati
    Delimitatore Fine riga del sistema broker
    Tipo di delimitatore Postfix
    FTP Trasferimento remoto Selezionato
    Protocollo di trasferimento FTP, o SFTPo FTPS
    Porta e server remoto ftpserver.hursley.abc.com
    Identità di sicurezza myidentity
    Directory server /ftpfileoutput
    Modalità trasferimento ASCII (solo per FTP)
    Azione se il file remoto esiste Sostituire File esistente o Accoda al file esistente
    Sostituisci file locale dopo il trasferimento Selezionato
    Se sono stati utilizzati altri valori per la risorsa server FTP, FTPS, o SFTP , utilizzare tali valori. Le impostazioni qui utilizzate sono identiche a quelle utilizzate nell'esempio in Scrittura di un file nel file system locale , ad eccezione del fatto che la proprietà Trasferimento remoto è stata selezionata e che ora sono presenti proprietà nella scheda FTP . Se si deseleziona la proprietà Trasferimento remoto , il nodo funziona come nell'esempio in Scrittura di un file nel filesystem locale; le proprietà nella scheda FTP restano impostate ma vengono ignorate.

    È possibile sovrascrivere la proprietà Server remoto e porta sul nodo impostando un valore nell'ambiente locale. Per ulteriori informazioni, consultare Sovrascritture dell'ambiente locale per il server remoto sul nodo FileOutput.

  2. Distribuire il flusso di messaggi al server di integrazione. Vedi Distribuzione di soluzioni di integrazione.
  3. Inviare i primi tre messaggi al terminale In del nodo FileOutput .
  4. Inviare il messaggio finale al terminale Finish File del nodo FileOutput .
  5. Se il file remoto esiste, la modalità per la scrittura al file remoto viene utilizzata per specificare se il file trasferito sostituisce un file esistente o appende i dati al file esistente. Il trasferimento avviene sull'azione Finish File. Per supportare l'utilizzo di Append potrebbe essere necessario aggiornare la configurazione del server FTP.

Risultati

All'esecuzione di questi passaggi si verificheranno le azioni seguenti:
  1. Verrà elaborato il file. Il nodo FileOutput genera un record per messaggio con un carattere di terminazione riga del file system locale dopo ogni messaggio. Il file contiene i seguenti dati, con ogni riga terminata da una coppia di caratteri di ritorno a capo ( X'0D' ) e avanzamento riga ( X'0A' ) (su un sistema Windows ):
    <Message>test1</Message>
    <Message>testtwo</Message>
    <Message>testthree</Message>
  2. I record vengono accumulati nel file test_output1.xml contenuto nella directory C:\FileOutput\TestDir\mqsitransit. Quando il messaggio finale viene inviato al terminale Finish File, il file viene spostato nella directory del server FTP, FTPS, o SFTP remoto (poiché è selezionata la proprietà Trasferimento remoto ). Come risultato, verrà creato il file /ftpfileoutput/test_output1.xml.
  3. Se un file con lo stesso nome esiste nella directory del server FTP, FTPS, oppure SFTP remoto, il file esistente viene sovrascritto.

    Se il server FTP o FTPS remoto non è in esecuzione su un sistema Windows e la proprietà Modalità di trasferimento è impostata su ASCII, la codifica dei caratteri e i caratteri di terminazione della riga potrebbero essere modificati dopo il trasferimento. Ad esempio, su un server FTP z/OS® , il testo ASCII viene generalmente convertito in EBCDIC e le coppie di caratteri terminator di linea sono sostituite da EBCDIC nuovi caratteri di riga (X'15 '). Altri server FTP o FTPS potrebbero trattare i trasferimenti ASCII in modo diverso. Se si utilizza SFTP, la proprietà Modalità di trasferimento verrà ignorata e i file verranno inviati come file binari.

  4. Poiché la proprietà Mantieni file locale dopo il trasferimento è selezionata, il file locale non viene eliminato, ma viene spostato dalla sottodirectory mqsitransit alla directory di output, C:\FileOutput\TestDir. Se esiste un file con lo stesso nome nella directory di output, il file esistente viene ridenominato e spostato nella directory mqsiarchive. Ad esempio, è possibile che venga creato il seguente file:
    C:\FileOutput\TestDir\mqsiarchive\20081124_155346_312030_test_output1.xml
    Tuttavia, se un file con questo nome esiste già in questa directory di archivio, viene sovrascritto in base al valore della proprietà Sostituisci file di archivio duplicati impostata sul nodo FileOutput .

Cosa fare successivamente

Per ulteriori informazioni, consultare Impostazione della proprietà Definizione record per i nodi FileOutput e FTEOutput, che mostra i risultati dell'esecuzione di questa attività con valori differenti impostati nelle proprietà Definizione record, Delimitatoree Tipo di delimitatore del nodo FileOutput .