リモート FTP、FTPS、 または SFTP ディレクトリー上のファイルの読み取り
FileInput ノードを使用して、リモート FTP、FTPS、 または SFTP サーバー上のディレクトリーにあるファイルを読み取り、そのファイルの内容に基づいてメッセージを伝搬します。
始める前に
この例は、「 メッセージ・フローの入力としてのローカル・ファイルの使用 」で説明されている例の拡張であり、メッセージ・フローでの FileInput ノードの使用方法を説明しています。 この手順では、 Windows オペレーティング・システムを使用しており、 FileInput ノードを含むメッセージ・フローを作成済みであることを前提としています。 他に以下のリソースが必要です。
- FTP、FTPS、 または SFTP サーバー。 以下のように設定された FTP サーバー、FTPS サーバー、または SFTP サーバーがあることを確認します。
上記の値は、この例で使用するための値でしかありません。 他の値を使用する場合は、その値を記録して、タスク中に該当する値を設定できるようにしてください。
- セキュリティー ID。 mqsisetdbparms コマンドを使用して、myidentity というセキュリティー ID を定義し、ユーザーおよびパスワードの詳細を確認します。FTP サーバーまたは FTPS サーバーに接続する場合は、ファイル・ノードが ID 定義を検出できるように、セキュリティー ID に
ftp::接頭部が必要です。 例えば、次のコマンドを使用します。mqsisetdbparms workDir -n ftp::myidentity -u myuserid -p mypasswordSFTP サーバーに接続する場合は、次の例のようにセキュリティー 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 という名前の入力ファイルを作成します。
各行は、FTP、FTPS、 または SFTP サーバーが検出されたシステムに適した行終了文字で終了します。 このファイルは、入力ディレクトリーには入れないで、FTP サーバー、FTPS サーバー、または SFTP サーバーのディレクトリー /ftpfileinput に入れてください。<Message>test1</Message> <Message>testtwo</Message> <Message>testthree</Message> - メッセージ・セット。 この例は、XMLNSC パーサーを使用する xml1 という名のメッセージ・セットを使用します。 メッセージ・セット xml1 は、以下のフォームのメッセージをモデル化します。
<Message>...</Message>
このタスクの概要
以下のステップを実行します。
手順
結果
- ファイル test_input1.xml は、FTP、FTPS、 または SFTP サーバー・ディレクトリー (/ftpfileinput) からローカル・ディレクトリー (C:\FileInput\TestDir) に転送されます。 FTP、FTPS、 または SFTP サーバー・ディレクトリーからファイルが削除されます。
- FileInput ノードは、 「レコードおよびエレメント」 タブのプロパティーで定義されているように、DOS または UNIX の行終了で終了するレコードを検出し、検出したレコードごとにメッセージを作成します。 このノードは、Out ターミナルに接続されているメッセージ・フローに以下の 3 つのメッセージを伝搬します。
- メッセージ 1:
<Message>test1</Message> - メッセージ 2:
<Message>testtwo</Message> - メッセージ 3:
<Message>testthree</Message>
- メッセージ 1:
- End of Data ターミナルにノードが接続されている場合、このファイル中の最後のレコードが処理された後、End of Data メッセージが伝搬されます。
- 処理が完了すると、ファイル test_input1.xml が mqsiarchive サブディレクトリー C:\FileInput\TestDir\mqsiarchiveに移動されます。 test_input1.xml という名前のファイルが mqsiarchive サブディレクトリー内に存在する場合、そのファイルは上書きされます。
- メッセージ・フローが失敗すると、 FileInput ノードのプロパティーに設定された値に従って再試行処理が試行されます。 このタスク例では、タイム・スタンプがファイル名に追加され、ファイルは mqsibackout ディレクトリーに移動されます。 以下に、そのようなファイルへのパスの例を示します。C:\FileInput\TestDir\mqsibackout\20070928_150234_171021_test_input1.xml
FTP サイドでエラーが生じ、アクセスが拒否されたと報告された場合、0 バイトのファイルが作成され、mqsibackout ディレクトリーに移動されます。 失敗したすべての FTP 試行について、mqsibackout ディレクトリーに 0 バイトのファイルが作成されます。
「リモート転送」プロパティーを選択したので、45 秒の FTP スキャン遅延によって、3 秒間のポーリング間隔が指定変更されます。
次のタスク
詳しくは、 ファイルをレコードに分離する方法の制御を参照してください。ここには、 FileInput ノードの 「レコード検出」、 「区切り文字」、および 「区切り文字タイプ」 の各プロパティーで値の他の組み合わせを指定した場合の効果が示されています。