2

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

    return IntegrationFlows
            .from("inputChannel")
            .split(fileSplitter)
            .handle(this::doStuff1)
            .handle(this::doStuff2)
            .handle(this::doStuff3)
            .aggregate()
            .handle(this::deleteFile)

文件分割器:

@Bean
public FileSplitter fileSplitter() {
    FileSplitter fileSplitter = new FileSplitter(true, true);
    fileSplitter.setCharset(StandardCharsets.UTF_8);
    fileSplitter.setApplySequence(true);
    return fileSplitter;
}

输入的类型为File。文件很大,所以我想逐行流式传输内容,处理它们并在最后删除文件。现在的问题是我必须检查并忽略链上所有处理程序方法中的文件 SOF、EOF 标记有效负载。如果不检查每个 doStuff 方法中的类型,是否有不同的方法?(我认为建议可能有用但还没有尝试过)

4

1 回答 1

1

您可以.filter()将标记标记.route()到不同的通道,或者.transform()将它们标记为空字符串。

.filter()在您的情况下可能是最简单的,使用“智能”过滤器也会删除结束标记上的文件。

于 2017-09-21T22:49:44.047 回答