2017-09-21 24 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 –