FileInput ノードを使用して、リモート FTP サーバーまたはリモート SFTP サーバー上のディレクトリーのファイルを読み取ってから、そのファイルの内容をベースとするメッセージを伝搬します。
始める前に:この例は、
メッセージ・フローの入力としてローカル・ファイルを使用するで説明した例の延長であり、メッセージ・フローでの
FileInput ノードの使用法について説明しています。 説明では、
Windows オペレーティング・システムを使用中であり、
FileInput ノードを含むメッセージ・フローを作成したことを前提にしています。 他に以下のリソースが必要です。
- FTP サーバーまたは SFTP サーバー。 以下のように設定された FTP サーバーまたは SFTP サーバーがあることを確認します。
- サーバー
- ftpserver.hursley.abc.com
- ポート
- 21 (FTP 用) または 22 (SFTP 用)
- 作業ディレクトリー
- /ftpfileinput
- ユーザー ID
- myuserid
- パスワード
- mypassword
上記の値は、この例で使用するための値でしかありません。 他の値を使用する場合は、その値を記録して、タスク中に該当する値を設定できるようにしてください。
- セキュリティー ID。 mqsisetdbparms コマンドを使用して、myidentity という、ユーザーおよびパスワードの詳細に合ったセキュリティー ID を定義します。
FTP サーバーに接続する場合は、ファイル・ノードが ID 定義を検索できるように、セキュリティー ID に
ftp:: 接頭部が必要です。 例えば、
MyBroker というブローカーに対しては、次のようなコマンドを使用します。
mqsisetdbparms MyBroker -n ftp::myidentity -u myuserid -p mypassword
SFTP サーバーに接続する場合は、次の例のようにセキュリティー ID に
sftp:: 接頭部が必要です。
mqsisetdbparms MyBroker -n sftp::myidentity -u myuserid -p mypassword
公開鍵認証を使用するように SFTP サーバーへの接続を構成することもできます。それには、パスワードの代わりに SSH ID ファイルとパスフレーズを指定します。以下に例を示します。
mqsisetdbparms MyBroker -n sftp::myidentity -u myuserid -i identity_file -r passphrase
SFTP サーバーへの接続の構成について詳しくは、SFTP を使用したファイルのセキュアな転送を参照してください。
- 入力ファイル。 この例のシナリオをたどるために、次のような内容を持った test_input1.xml という名前の入力ファイルを作成します。
<Message>test1</Message>
<Message>testtwo</Message>
<Message>testthree</Message>
各行は、FTP サーバーまたは SFTP サーバーが置かれているシステムに適した行終了文字で終了します。 このファイルは、入力ディレクトリーには入れないで、FTP サーバーまたは SFTP サーバーのディレクトリー /ftpfileinput に入れてください。
- メッセージ・セット。 この例は、XMLNSC パーサーを使用する xml1 という名のメッセージ・セットを使用します。 メッセージ・セット xml1 は、以下のフォームのメッセージをモデル化します。
<Message>...</Message>
- 必要なノード・プロパティーを FileInput ノード上で設定します。 以下の表は、設定する必要のある FileInput ノード・プロパティー、プロパティーが表示されるタブ、プロパティーが必須かどうか、および必要な値を要約しています。
タブ |
プロパティー |
値 |
基本 |
入力ディレクトリー |
C:¥FileInput¥TestDir 入力ディレクトリーが存在しない場合、ファイルを FTP または SFTP を介して処理している場合であっても、ファイルは全く処理されません。
|
ファイル名またはパターン |
test_input1.xml |
正常処理時のアクション |
アーカイブ・サブディレクトリーに移動する |
重複するアーカイブ・ファイルを置き換える |
選択されている |
入力メッセージの解析 |
メッセージ・ドメイン |
XMLNSC |
メッセージ・モデル |
xml1 |
ポーリング |
ポーリング間隔 |
3 |
再試行 |
ファイル失敗時のアクション |
タイム・スタンプを追加し、バックアウト・サブディレクトリーに移動する |
レコードとエレメント |
レコード検出 |
区切り |
区切り文字 |
DOS または UNIX の行終了 |
区切り文字タイプ |
後置 |
FTP |
リモート転送 |
選択されている |
転送プロトコル |
FTP または SFTP |
リモート・サーバーおよびポート |
ftpserver.hursley.abc.com |
セキュリティー ID |
myidentity |
サーバー・ディレクトリー |
/ftpfileinput |
転送モード |
ASCII (FTP 用のみ) |
スキャン遅延 |
45 |
FTP サーバーまたは SFTP サーバーのリソースに対して他の値を使用していた場合、その値を入力します。 ここで使用する設定は、メッセージ・フローの入力としてローカル・ファイルを使用するの例で使用したものと同一です。ただし、「リモート転送」プロパティーが選択されて、「FTP」タブ上にプロパティーがある点が異なります。
「リモート転送」プロパティーをクリアすると、ノードは、メッセージ・フローの入力としてローカル・ファイルを使用するの例の場合と同じ動作をします。「FTP」タブのプロパティーは設定されたままになりますが、無視されます。
- メッセージ・フローをブローカーにデプロイします。 パッケージ化およびデプロイを参照してください。
これらのステップを実行すると、以下のアクションが起きます。
- ファイル test_input1.xml が、FTP サーバーまたは SFTP サーバーのディレクトリー (/ftpfileinput) から、ローカル・ディレクトリー (C:¥FileInput¥TestDir) に転送されます。
このファイルは、FTP サーバーまたは SFTP サーバーのディレクトリーから削除されます。
- FileInput ノードは、「レコードとエレメント」タブのプロパティーで定義されているとおりに、DOS または UNIX の行終了で終了しているレコードを検出して、それぞれのレコードごとにメッセージを作成します。
このノードは、Out ターミナルに接続されているメッセージ・フローに以下の 3 つのメッセージを伝搬します。
- 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 ノードの「レコード検出」、「区切り文字」、および「区切り文字タイプ」プロパティーに、他の値の組み合わせを指定した場合の結果について説明されています。
以下のサンプルも、このノードの使用方法を示します。
サンプルに関する情報は、WebSphere Message
Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message
Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。