2017-06-02 40 views
2

我目前正在設計Spring集成中的集成流程,其中我使用FileSplitter處理程序分割文件並將結果發送到其他服務。我目前正在使用FileSystemPersistentAcceptOnceFileListFilter來處理「重複」文件,但是我想在使用FileSplitter讀取文件之後添加重命名文件的功能,實現它的最簡單方法是什麼?在FileSplitter完成後重命名文件

回答

3

FileSplittermarkers選項。這樣它會生成一個STARTEND消息。所以,當你得到一個END,您可以執行所需的更名邏輯:

設置爲true之前,文件數據後,發出文件標記信息的開始/結束。標記是FileSplitter.FileMarker有效內容的消息(標記屬性中包含START和END值)。順序處理某些行被過濾的下游流中的文件時,可能會使用標記。它們使下游處理能夠知道文件何時被完全處理。另外,包含START或END的頭文件_標記被添加到這些消息中。 END標記包括行數。如果文件爲空,則只有START和END標記以0作爲lineCount發出。默認值:false。如果爲true,則默認情況下apply-sequence爲false。另請參閱markers-json。

有一個sample application具有類似的功能。

+0

使用路由器將標記路由到一個流,並將這些行路由到另一個流;在標記流上,過濾START標題並使用END標題作爲信號來重命名文件。 –

+0

您也可以在分離器上使用['ExpressionEvaluatingRequestHandlerAdvice'](http://docs.spring.io/spring-integration/reference/html/messaging-endpoints-chapter.html#expression-advice),並進行重命名'onSuccessExpression'。 –