Apache Camel 文件组件使用不同的目录

Apache Camel file component to use different directories

Apache camel 文件组件中是否有一个选项可以使用多个不同的目录来读取文件。

\
  - home
     - level1
        - level2
          - input   (files are within this folder)
  - dir1
     - test 
        - folder1  ( set of files in this folder)
        - folder2  ( set of files in this folder) 

当文件夹位于同一目录下时,另一个选项是使用 dynamic routing

但我的用例无法将文件移动到公共目录,我需要输入目录结构相同并且是两个不同的目录。

有没有像下面这样的选项?

<from uri="file://home/leve1/level2/input,//dir1/test/folder1,//dir1/test/folder2"/>
<to ...

file 组件接受 1 个路径作为输入(用于上下文路径)。您可以考虑使用多个 file 组件,而不是单个 file 组件中的多个路径。

  • 使用来自 EIP 的多个并指向同一个端点
<from uri="file://home/leve1/level2/input" />
    <to uri="direct:file-handler" />

<from uri="file://dir1/test/folder1" />
    <to uri="direct:file-handler" />

<from uri="file://dir1/test/folder2" />
    <to uri="direct:file-handler" />

<from uri="direct:file-handler" />
    <!-- your logic goes here -->

此处要考虑的另一件事是 recursive 选项,您可以将其与 antIncludeinclude 选项一起使用。在这种情况下,您将能够只用一个消费者轮询不同的目录,例如

<from uri="file://dir1/test?recursive=true&amp;antInclude=folder1/*,folder2/*" />

不过请注意,如果递归轮询太大的文件树,这将非常低效