我正在使用Spring Integration来处理/加载来自csv文件的数据。 我的配置是 -
1)轮询传入文件
2)使用拆分器拆分文件 - 这为我提供了文件的单独行(记录)
3)对行进行标记 - 这为我提供了值或列
4)使用聚合器聚合/收集行(记录)并将其写入批处理数据库
Poller - >拆分器 - > Tokenizer - >聚合
现在我想等到文件的所有内容都写入数据库,然后将文件移动到另一个文件夹。 但是如何识别文件处理何时完成?
问题在于,如果文件有100万条记录,而我的聚合器的批量大小为500,我怎么知道我的文件的每条记录何时被汇总并写入数据库。
答案 0 :(得分:0)
FileSplitter
可以选择在输出中添加标记(BOF,EOF) - 您必须在二级分割器之前过滤和/或路由它们。
请参阅FileSplitter。
- (markers)设置为true以在文件数据之前和之后发出文件标记消息的开始/结束。标记是具有
醇>FileSplitter.FileMarker
有效负载的消息(标记属性中包含START和END值)。在顺序处理下游流中的某些行被过滤的文件时,可能会使用标记。它们使下游处理能够知道文件何时被完全处理。此外,包含START或END的标题file_marker
将添加到这些消息中。 END标记包括行计数。如果文件为空,则仅发出START和END标记,并将0作为lineCount。默认值:false
。如果为true,则默认情况下apply-sequence
为false。另请参阅markers-json
。