【问题标题】:Apache Camel: Wait for a group of files and then process as batchApache Camel:等待一组文件,然后作为批处理
【发布时间】:2015-01-13 18:01:21
【问题描述】:

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

  1. request-manifest.xml 由外部进程生成到Incoming/Requests。该文件列出了一组要作为一个单元处理的文件。
  2. 之后的某个时间,这些文件由另一个外部进程生成到Incoming/Parts。这些文件是并行创建的,因此可能会在不同时间以任意顺序显示,但通常在几分钟内显示。
  3. 然后将整个批次作为一个单元进行处理(例如,压缩和 FTP,复制到另一个位置等)

从概念上讲,我已经制定了两种可能的方法:

  1. 将清单转换并拆分为单独的 ManifestItem,然后并行丰富每个 ManifestItem,然后重新组合成一个完整的 Batch。
  2. 轮询 Incoming/Parts 并使用其批次 ID 丰富每个文件消息,然后将它们聚合成一个完整的批次

第一种方法使用Composed Message Processor 模式,虽然我不确定如何让 ManifestItems 扩充以并行等待,而且我不知道如果系统等待数百或数千它是否会很好地扩展的文件。从概念上讲,它似乎更简单,只有一条路线。

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

这两种方法看起来都不错吗?做这种事情的最“Cameline”方式是什么?

【问题讨论】:

    标签: file routes apache-camel polling


    【解决方案1】:

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

    【讨论】:

    • 这在某些情况下可能可行,但在我的情况下,生成单个文件的进程彼此不了解,也不知道整个批次何时准备就绪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多