2017-02-27 142 views
0

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

1)轮询传入文件

2)采用分路器的文件 - 这给了我的文件

3)标记化行的各行(记录) - 这使我的价值观或列

4)使用聚合汇总/收集行(记录),并在批处理

轮询写入到数据库 - >分离器 - >标记生成器 - >聚合

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

问题是,如果文件中有100万条记录,我的集合体具有的500批次大小,如何将我知道当我的文件的每一条记录已经聚集并写入到数据库中。您的次分流之前,你必须过滤和/或路由他们 -

回答

0

FileSplitter可以选择添加标记(BOF,EOF)的输出。

参见FileSplitter

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

这只会在文件的顺序处理,但我正在并行处理文件 –