File ApacheCamel:等待一组文件,然后作为批处理进行处理

File ApacheCamel:等待一组文件,然后作为批处理进行处理,file,routes,apache-camel,polling,File,Routes,Apache Camel,Polling,我正在寻找关于如何设置骆驼路线的建议。基本上,我需要等待创建给定的文件列表,然后将它们作为一个单元一起处理。以下是我的设想: 外部进程将请求清单.xml生成到传入/请求中。此文件列出一组要作为一个单元处理的文件 之后,这些文件由另一个外部进程生成到传入/部件中。这些文件是并行创建的,因此可能会在不同的时间以任何顺序显示,但通常会在几分钟内显示 然后将整个批次作为一个单元进行处理(例如,压缩和FTP’d,复制到另一个位置等) 从概念上讲,我已经找到了两种可能的方法: 转换清单并将其拆分为单独的清单

我正在寻找关于如何设置骆驼路线的建议。基本上,我需要等待创建给定的文件列表,然后将它们作为一个单元一起处理。以下是我的设想:

  • 外部进程将
    请求清单.xml
    生成到
    传入/请求中。此文件列出一组要作为一个单元处理的文件
  • 之后,这些文件由另一个外部进程生成到
    传入/部件中。这些文件是并行创建的,因此可能会在不同的时间以任何顺序显示,但通常会在几分钟内显示
  • 然后将整个批次作为一个单元进行处理(例如,压缩和FTP’d,复制到另一个位置等)
  • 从概念上讲,我已经找到了两种可能的方法:

  • 转换清单并将其拆分为单独的清单项,然后对每个清单项进行并行充实,然后将其重新合并为一个完整的批处理
  • 轮询
    传入/部分
    ,并使用其批id充实每个文件消息,然后将它们聚合到一个完整的批中
  • 第一种方法使用该模式,尽管我不确定如何让ManifestItems扩展并行等待,而且我不知道如果系统等待数百或数千个文件,它是否能够很好地扩展。从概念上讲,它似乎更简单,只有一条路线

    第二种方法更受事件驱动(即使文件端点轮询,它也会将其从我们这里抽象出来),但它似乎更复杂。它将有两条路径,一条用于处理清单,另一条用于处理部分,并且似乎需要一些临时存储(内存数据库中?)来累积传入请求上的数据,以便在出现每个文件时将其与批关联


    这两种方法看起来都是好方法吗?这样做的最“卡米林”方式是什么?

    如果您对外部应用程序有一定的控制权,您可以让它们在完成生成所需文件后生成第三个文件。然后可以使用选项
    doneFileName
    开始处理文件。请参阅-这些选项对ftp组件也有效。

    在某些情况下可能会起作用,但在我的情况下,生成单个文件的进程彼此不了解,也不知道整个批处理何时准备就绪。