2017-09-21 97 views
1

我想设置这样的集成信息流:Spring集成DSL:与FileSplitter开始/结束标记有效载荷处理

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

您可以将.filter()的标记.route()分别指向不同的频道或.transform()它们来说,比如说一个空字符串。

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

+0

有关更多上下文,请参阅https://stackoverflow.com/questions/46350357/spring-integration-dsl-configure-handler-that-handles-only-when-the-argument-ma –