私はかなり単純なルートを持っています
sftp://hostname:22//incoming/folder/location/?username=username&password=xxxxx
&localWorkDirectory=/tmp&readLock=changed&readLockCheckInterval=2000
&move=processed/$simple{date:now:yyyy}/$simple{date:now:MM}/$simple{date:now:dd}${file:name}
&consumer.delay=450000&stepwise=false&streamDownload=true&disconnect=true
onException 句もあります
onException(ValidationException.class)
.handled(true)
.logStackTrace(true)
.filter(header("VALIDATION_ERROR").isEqualTo(true))
.choice()
.when(header("CamelFileName").contains("Param1"))
.to(sftp://hostname:22//One/error/folder?password=xxxxxx&username=username)
.when(header("CamelFileName").contains("Param2"))
.to(sftp://hostname:22//Two/error/folder?password=xxxxxx&username=username)
.endChoice();
単一のファイルがある場合、ルートは期待どおりに機能するようです。複数のファイルと例外が発生すると、次のような多くの異なる例外が発生します
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot list directory: incoming/folder/location
Caused by: java.lang.IndexOutOfBoundsException
ルートに記載されているすべての属性を使用してみました。streamDownload、stepwise、readLock、localWorkDirectory など。ただし、複数ファイル時のエラーハンドリングは動作しません。最初のファイルが処理されているのがわかります。ただし、例外が発生し、incoming/folder/locationがリスト不可になると、処理済みフォルダーに移動しません。処理された(true)の代わりにcontinued(true)も使用してみました