首页 文章

Apache Camel:等待一组文件,然后批量处理

提问于
浏览
1

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

  • request-manifest.xml 由外部进程生成 Incoming/Requests . 此文件列出了一组要作为一个单元处理的文件 .

  • 之后,这些文件由另一个外部进程生成 Incoming/Parts . 这些文件是并行创建的,因此可以在不同时间以任何顺序显示,但通常在彼此的几分钟内显示 .

  • 然后将完整的批次作为一个单元处理(例如压缩和FTP,复制到另一个位置等)

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

  • 将清单转换并拆分为单独的ManifestItems,然后每个ManifestItems并行丰富,然后重新加入到一个完整的Batch中 .

  • 轮询 Incoming/Parts 并使用其batch-id丰富每个文件消息,然后将它们聚合为一个已完成的批处理

第一种方法使用Composed Message Processor模式,虽然我知道如果系统等待数百或数千个文件它是否会很好地扩展 . 从概念上讲,它只是一条路线似乎更简单 .

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

这些中的任何一个看起来都是好方法吗?做这样的事情的最“Cameline”方式是什么?

1 回答

  • 0

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

相关问题