Spring Integration DSL:处理FileSplitter START / END标记有效负载

时间:2017-09-21 21:17:59

标签: spring-integration spring-integration-dsl

我想设置这样的集成流程:

    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方法中的类型有不同的方法吗? (我认为建议可能会有用但尚未尝试过它们)

1 个答案:

答案 0 :(得分:1)

您可以.filter()标记,.route()将它们添加到不同的频道,或.transform()它们,例如,空字符串。

.filter()可能是您最简单的,有一个" smart"过滤器也会删除结束标记上的文件。