我正在尝试编写扫描'input'目录的路由,如果找到.gz文件,将内容提取到辅助目录,如果发生错误(例如损坏的.gz),则会将文件移动到错误目录
实际发生的是文件开始正确地写出内容,然后发生错误 - 一个GZLIB异常,原件被正确放入错误目录但是'input'中的.gz没有被删除,因为例外
因此路线将不断打开,开始提取然后失败文件并不断重复一遍又一遍。当它失败时我需要它从'input'目录中删除文件,因此不会重新处理它。我期望.to()到文件位置来实现这一点,因为它通常表现为移动。
onException( Exception.class )
.to( "file://error_directory" )
.end()
from( "file://input" )
.choice()
.when( {filename matches *.gz} )
{unzip Gzip contents}
.to( "file://output" )
.when( ) ...
.end()
答案 0 :(得分:3)
您可以直接在文件使用者的文件端点上使用onException
选项代替moveFailed
。然后,如果有异常,原始文件将被移动。
类似
from( "file://input?moveFailed=error_directory" )
.choice()
.when( {filename matches *.gz} )
{unzip Gzip contents}
.to( "file://output" )
.when( ) ...
.end()
您可以在Camel文档中详细了解moveFailed
:http://camel.apache.org/file2