Apache-Camel文件递归移动到同一子目录



我目前有一个骆驼路由,它处理zip文件,然后将其移动到存储文件夹。

from(
file://importDir?recursive=true&preMove=processing&move=storage&moveFailed=error&include=.*\.zip$
).bean(bean, "process")

在实际的import中-Directory是包含zip文件的子目录。我想有相同的子目录在存储-目录,可能在处理-目录太。任何想法,如果我可以做到这一点与路由和文件语言表达式?

既然你设置了recursive=true,你就不能设置move=storage,因为这会导致循环。

例如:

  1. file.zip存放到/importDir/some-folder/
  2. 文件消费者读取文件并将其发送给处理器
  3. 处理后原文件存储到/importDir/some-folder/storage/
  4. 文件消费者递归地从/importDir/some-folder/storage/
  5. 找到File .zip
  6. 处理后再次放置到/importDir/some-folder/storage/storage/
  7. 无限期重复

现在你可以做的是设置move=.storage,这将把上面例子中的文件设置为/importDir/some-folder/.storage/,这将被文件消费者端点忽略。

更干净的解决方案是将处理过的文件存储在/importDir/之外,例如使用move=/somepath/storage/${file:name}。关于这一点,请参阅camel文档

。对于${file:name},在存储和importDir中的目录结构应该保持不变。

相关内容

最新更新