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 はそれがローカルの作業ファイルであることを認識しているため、作業ファイルはとにかく削除することを意図しているため、最適化してファイルのコピーの代わりに名前の変更を使用できます。