【问题标题】:Wait for File Processing to be finished等待文件处理完成
【发布时间】:2017-02-27 19:33:44
【问题描述】:

我正在使用 Spring Integration 处理/加载来自 csv 文件的数据。 我的配置是 -

1) 轮询传入文件

2) 使用拆分器拆分文件 - 这给了我文件的单独行(记录)

3) 标记行 - 这给了我值或列

4) 使用聚合器聚合/收集行(记录)并批量写入数据库

轮询器 -> 拆分器 -> 标记器 -> 聚合器

现在我想等到文件的所有内容都写入数据库,然后将文件移动到不同的文件夹。 但是如何识别文件处理完成的时间呢?

这里的问题是,如果文件有 100 万条记录,并且我的聚合器的批量大小为 500,我怎么知道我的文件的每条记录何时已聚合并写入数据库。

【问题讨论】:

    标签: spring spring-integration


    【解决方案1】:

    FileSplitter 可以选择在输出中添加标记(BOF、EOF) - 您必须在二级分离器之前过滤和/或路由它们。

    FileSplitter

    1. (markers) 设置为 true 以在文件数据之前和之后发出文件标记消息的开始/结束。标记是具有FileSplitter.FileMarker 有效负载的消息(在标记属性中具有 START 和 END 值)。在过滤某些行的下游流中按顺序处理文件时,可能会使用标记。它们使下游处理能够知道文件何时已被完全处理。此外,包含 START 或 END 的标头 file_marker 将添加到这些消息中。 END 标记包括行数。如果文件为空,则仅发出 START 和 END 标记,其中 0 作为 lineCount。默认值:false。当为真时,apply-sequence 默认为假。另请参阅markers-json

    【讨论】:

    • 这仅适用于文件的顺序处理,但我正在并行处理文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多