我想设置这样的集成流程:
return IntegrationFlows
.from("inputChannel")
.split(fileSplitter)
.handle(this::doStuff1)
.handle(this::doStuff2)
.handle(this::doStuff3)
.aggregate()
.handle(this::deleteFile)
FileSplitter:
@Bean
public FileSplitter fileSplitter() {
FileSplitter fileSplitter = new FileSplitter(true, true);
fileSplitter.setCharset(StandardCharsets.UTF_8);
fileSplitter.setApplySequence(true);
return fileSplitter;
}
输入的类型为File
。文件大小很大,所以我想逐行传输内容,处理它们并最后删除文件。问题是现在我必须检查并忽略链中所有处理程序方法中的文件SOF,EOF标记有效负载。没有检查每个doStuff方法中的类型有不同的方法吗? (我认为建议可能会有用但尚未尝试过它们)
答案 0 :(得分:1)
您可以.filter()
标记,.route()
将它们添加到不同的频道,或.transform()
它们,例如,空字符串。
.filter()
可能是您最简单的,有一个" smart"过滤器也会删除结束标记上的文件。