Spring 集成:使用 Splitter 和 Aggregator

Spring integration: use Splitter and Aggregator

我正在使用 FileSplitter 逐行读取文件,然后过滤一些损坏的行 - 丢弃一些行 - 以便对每一行进行网络服务调用。

除此之外我需要做的是将文件移动到完成的文件目录。

更新: 只是为了更清楚,过滤后的 successful/good 行将需要聚合在一个文件中以写入完成的目录和 corrupted/filtered 行将被写入另一行。

说到上面,我不清楚以下几点:

场景简单如下:

FileSplitter -> line Filter -> Outbound Gateway (webservices) -> Aggregator

FileSplitter 可以配置为发出 FileSplitter.FileMarker 作为第一条消息,分别带有 FileSplitter.FileMarker.Mark.START 和最后的 FileSplitter.FileMarker.Mark.END

您可以在拆分器之后添加路由器(PayloadTypeRouter 应该足够了)以处理不同流中的 FileSplitter.FileMarker。如果它是 FileSplitter.FileMarker.Mark.END 您只需执行所需的逻辑 即可移动到已完成的目录 .

我认为您不需要针对这种情况的聚合器。

无论如何,FileSplitter 可以与 setApplySequence(true) 一起配置,以便能够关联聚合器下游的组。但是你仍然无法及时知道组的大小来发布它。 FileSplitter.FileMarker.Mark.END 仍然可以在这里提供帮助,尽管我看不出你的任务的原因。

Reference Manual 中有一些关于此事的信息。