リモート FTP、FTPS、 または SFTP ディレクトリー上のファイルの読み取り

FileInput ノードを使用して、リモート FTP、FTPS、 または SFTP サーバー上のディレクトリーにあるファイルを読み取り、そのファイルの内容に基づいてメッセージを伝搬します。

始める前に

この例は、「 メッセージ・フローの入力としてのローカル・ファイルの使用 」で説明されている例の拡張であり、メッセージ・フローでの FileInput ノードの使用方法を説明しています。 この手順では、 Windows オペレーティング・システムを使用しており、 FileInput ノードを含むメッセージ・フローを作成済みであることを前提としています。 他に以下のリソースが必要です。
  • FTP、FTPS、 または SFTP サーバー。 以下のように設定された FTP サーバー、FTPS サーバー、または SFTP サーバーがあることを確認します。
    サーバー
    ftpserver.hursley.abc.com
    ポート
    21 (FTP または FTPS 用) または 22 (SFTP 用)
    作業ディレクトリー
    /FTP ファイル入力
    ユーザーID
    MyUserID
    パスワード
    mypassword

    上記の値は、この例で使用するための値でしかありません。 他の値を使用する場合は、その値を記録して、タスク中に該当する値を設定できるようにしてください。

  • セキュリティー ID。 mqsisetdbparms コマンドを使用して、myidentity というセキュリティー ID を定義し、ユーザーおよびパスワードの詳細を確認します。
    FTP サーバーまたは FTPS サーバーに接続する場合は、ファイル・ノードが ID 定義を検出できるように、セキュリティー ID に ftp:: 接頭部が必要です。 例えば、次のコマンドを使用します。
        mqsisetdbparms workDir -n ftp::myidentity -u myuserid -p mypassword
    SFTP サーバーに接続する場合は、次の例のようにセキュリティー ID に sftp:: 接頭部が必要です。
        mqsisetdbparms -w workDir -n sftp::myidentity -u myuserid -p mypassword
    公開鍵認証を使用するように SFTP サーバーへの接続を構成することもできます。それには、パスワードの代わりに SSH ID ファイルとパスフレーズを指定します。 例:
        mqsisetdbparms -w workDir -n sftp::myidentity -u myuserid -i identity_file -r passphrase

    既に設定されているセキュリティー資格情報を確認するには、 mqsireportdbparms コマンドを使用します。 統合サーバーによって使用されるリソースのパスワードの確認を参照してください。

    SFTP サーバーへの接続の構成について詳しくは、 SFTP を使用したファイルの安全な転送を参照してください。

  • 入力ファイル。 この例のシナリオをたどるために、次のような内容を持った test_input1.xml という名前の入力ファイルを作成します。
    <Message>test1</Message>
    <Message>testtwo</Message>
    <Message>testthree</Message>
    各行は、FTP、FTPS、 または SFTP サーバーが検出されたシステムに適した行終了文字で終了します。 このファイルは、入力ディレクトリーには入れないで、FTP サーバー、FTPS サーバー、または SFTP サーバーのディレクトリー /ftpfileinput に入れてください。
  • メッセージ・セット。 この例は、XMLNSC パーサーを使用する xml1 という名のメッセージ・セットを使用します。 メッセージ・セット xml1 は、以下のフォームのメッセージをモデル化します。
    <Message>...</Message>

このタスクの概要

以下のステップを実行します。

手順

  1. FileInput ノードで必要なノード・プロパティーを設定します。
    以下の表に、設定する必要がある FileInput ノードのプロパティー、それらが表示されるタブ、それらが必須であるかどうか、および必要な値を要約します。
    タブ プロパティー
    基本 入力ディレクトリー C:\FileInput\TestDir

    入力ディレクトリーが存在しない場合、ファイルを FTP、FTPS、または SFTP を介して処理している場合であっても、ファイルは全く処理されません。

    ファイル名またはパターン test_input1.xml
    正常処理時のアクション アーカイブ・サブディレクトリーに移動する
    重複するアーカイブ・ファイルを置き換える 選択されている
    入力メッセージの解析 メッセージ・ドメイン XMLNSC
    メッセージ・モデル xml1
    ポーリング ポーリング間隔 3
    再試行 ファイル失敗時のアクション タイム・スタンプを追加し、バックアウト・サブディレクトリーに移動する
    レコードおよびエレメント レコード検出 区切り
    区切り文字 DOS または UNIX の行終了
    区切り文字タイプ Postfix
    FTP リモート転送 選択されている
    転送プロトコル FTPSFTP、または FTPS
    リモート・サーバーおよびポート ftpserver.hursley.abc.com
    セキュリティー ID myidentity (myidentity)
    サーバー・ディレクトリー /FTP ファイル入力
    転送モード ASCII (FTP のみ)
    スキャン遅延 45
    FTP、FTPS、 または SFTP サーバー・リソースに他の値を使用した場合は、それらの値を入力します。 ここで使用する設定は、「 メッセージ・フローの入力としてのローカル・ファイルの使用」の例で使用した設定と同じですが、 「リモート転送」 プロパティーが選択されており、 「FTP」 タブにプロパティーがある点が異なります。 「リモート転送」 プロパティーをクリアすると、ノードは、 メッセージ・フローの入力としてのローカル・ファイルの使用の例と同じように動作します。 「FTP」 タブのプロパティーは設定されたままになりますが、無視されます。
  2. メッセージ・フローを 統合サーバーにデプロイします。 統合ソリューションのデプロイを参照してください。

結果

これらのステップを実行すると、以下のアクションが起きます。
  1. ファイル test_input1.xml は、FTP、FTPS、 または SFTP サーバー・ディレクトリー (/ftpfileinput) からローカル・ディレクトリー (C:\FileInput\TestDir) に転送されます。 FTP、FTPS、 または SFTP サーバー・ディレクトリーからファイルが削除されます。
  2. FileInput ノードは、 「レコードおよびエレメント」 タブのプロパティーで定義されているように、DOS または UNIX の行終了で終了するレコードを検出し、検出したレコードごとにメッセージを作成します。 このノードは、Out ターミナルに接続されているメッセージ・フローに以下の 3 つのメッセージを伝搬します。
    • メッセージ 1:
      <Message>test1</Message>
    • メッセージ 2:
      <Message>testtwo</Message>
    • メッセージ 3:
      <Message>testthree</Message>
  3. End of Data ターミナルにノードが接続されている場合、このファイル中の最後のレコードが処理された後、End of Data メッセージが伝搬されます。
  4. 処理が完了すると、ファイル test_input1.xmlmqsiarchive サブディレクトリー C:\FileInput\TestDir\mqsiarchiveに移動されます。 test_input1.xml という名前のファイルが mqsiarchive サブディレクトリー内に存在する場合、そのファイルは上書きされます。
  5. メッセージ・フローが失敗すると、 FileInput ノードのプロパティーに設定された値に従って再試行処理が試行されます。 このタスク例では、タイム・スタンプがファイル名に追加され、ファイルは mqsibackout ディレクトリーに移動されます。 以下に、そのようなファイルへのパスの例を示します。C:\FileInput\TestDir\mqsibackout\20070928_150234_171021_test_input1.xml

    FTP サイドでエラーが生じ、アクセスが拒否されたと報告された場合、0 バイトのファイルが作成され、mqsibackout ディレクトリーに移動されます。 失敗したすべての FTP 試行について、mqsibackout ディレクトリーに 0 バイトのファイルが作成されます。

「リモート転送」プロパティーを選択したので、45 秒の FTP スキャン遅延によって、3 秒間のポーリング間隔が指定変更されます。

次のタスク

詳しくは、 ファイルをレコードに分離する方法の制御を参照してください。ここには、 FileInput ノードの 「レコード検出」「区切り文字」、および 「区切り文字タイプ」 の各プロパティーで値の他の組み合わせを指定した場合の効果が示されています。