我目前有一个骆驼路由,它处理zip文件,然后将其移动到存储文件夹。
from(
file://importDir?recursive=true&preMove=processing&move=storage&moveFailed=error&include=.*\.zip$
).bean(bean, "process")
在实际的import中-Directory是包含zip文件的子目录。我想有相同的子目录在存储-目录,可能在处理-目录太。任何想法,如果我可以做到这一点与路由和文件语言表达式?
既然你设置了recursive=true
,你就不能设置move=storage
,因为这会导致循环。
例如:
- file.zip存放到
/importDir/some-folder/
- 文件消费者读取文件并将其发送给处理器
- 处理后原文件存储到
/importDir/some-folder/storage/
- 文件消费者递归地从
/importDir/some-folder/storage/
找到File .zip - 处理后再次放置到
/importDir/some-folder/storage/storage/
- 无限期重复
现在你可以做的是设置move=.storage
,这将把上面例子中的文件设置为/importDir/some-folder/.storage/
,这将被文件消费者端点忽略。
更干净的解决方案是将处理过的文件存储在/importDir/
之外,例如使用move=/somepath/storage/${file:name}
。关于这一点,请参阅camel文档
。对于${file:name},在存储和importDir中的目录结构应该保持不变。