21.21. 固定名を使用して単一のファイルを使用する
単一のファイルをダウンロードする必要があり、ファイル名がわかっている場合は、fileName=myFileName.txt を使用して、ダウンロードするファイルの名前を Camel に伝えることができます。デフォルトでは、コンシューマーは引き続き FTP LIST コマンドを実行してディレクトリーのリストを作成し、次に fileName オプションに基づいてこれらのファイルをフィルタリングします。ただし、このユースケースでは、useList=false を設定してディレクトリーリストをオフにすることが望ましい場合があります。たとえば、FTP サーバーへのログインに使用されるユーザーアカウントには、FTP LIST コマンドを実行する権限がない場合があります。したがって、useList=false でこれをオフにしてから、ダウンロードするファイルの固定名を fileName=myFileName.txt で指定すると、FTP コンシューマーは引き続きファイルをダウンロードできます。何らかの理由でファイルが存在しない場合、Camel はデフォルトで例外を出力します。これをオフにして、ignoreFileNotFoundOrPermissionError=true を設定することでこれを無視できます。
たとえば、単一のファイルを取得し、使用後に削除する Camel ルートを作成するには、次のようにします。
from("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true")
.to("activemq:queue:report");
from("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true")
.to("activemq:queue:report");
上で説明したすべてのオプションを使用したことに注意してください。
これは ConsumerTemplate でも使用できます。たとえば、単一のファイル (存在する場合) をダウンロードし、ファイルの内容を文字列型として取得するには、次のようにします。
String data = template.retrieveBodyNoWait("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true", String.class);
String data = template.retrieveBodyNoWait("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true", String.class);