等待文件处理完成

时间:2017-02-27 19:33:45

标签: spring spring-integration

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

1)轮询传入文件

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

3)对行进行标记 - 这为我提供了值或列

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

Poller - >拆分器 - > Tokenizer - >聚合

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

问题在于,如果文件有100万条记录,而我的聚合器的批量大小为500,我怎么知道我的文件的每条记录何时被汇总并写入数据库。

1 个答案:

答案 0 :(得分: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
  2.