Red Hat Training

A Red Hat training course is available for Red Hat Fuse

107.10. ローカル作業ディレクトリーの使用

Camel は、リモート FTP サーバーからの消費と、ローカルの作業ディレクトリーへのファイルの直接ダウンロードをサポートしています。これにより、FileOutputStream を使用してローカルファイルに直接ストリーミングされるため、リモートファイルのコンテンツ全体がメモリーに読み込まれるのを回避できます。

Camel はリモートファイルと同じ名前のローカルファイルに保存しますが、ファイルのダウンロード中は拡張子 .inprogress が付きます。その後、ファイルの名前が変更され、.inprogress 接尾辞が削除されます。最後に、Exchange が完了すると、ローカルファイルが削除されます。

したがって、リモート FTP サーバーからファイルをダウンロードしてファイルとして保存する場合は、次のようなファイルエンドポイントにルーティングする必要があります。

from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
ヒント

上記のルートは、ファイルの内容全体をメモリーに読み込まないようにするため、非常に効率的です。リモートファイルをローカルファイルストリームに直接ダウンロードします。次に、java.io.File ハンドルが Exchange 本体として使用されます。ファイルプロデューサーはこの事実を利用して、作業ファイルの java.io.File ハンドルを直接操作し、ターゲットファイル名に対して java.io.File.rename を実行できます。Camel はそれがローカルの作業ファイルであることを認識しているため、作業ファイルはとにかく削除することを意図しているため、最適化してファイルのコピーの代わりに名前の変更を使用できます。