2017-03-01 1 views
1

나는 다음 봄 통합 구성이 : 그것은 제대로 작동하지만 난 그것을 표시하기 위해 원본 파일의 이름을 바꿀 수있는 방법을 FTP 어댑터가있을 때 처리로있어가 FTP 어댑터를 성공적으로 처리하는 것 원본 파일의 이름을 변경

@Bean 
public IntegrationFlow myFlow() { 
    return IntegrationFlows.from(Files.inboundAdapter(new File(inputDir)) 
        .patternFilter("*.csv"), 
      poller -> poller.poller(pm -> pm.cron(cronExpression))) 
      .transform(Transformers.fileToByteArray()) 
      .handleWithAdapter(adapters -> adapters.ftp(ftpSessionFactory()) 
        .remoteDirectory(remoteDir)) 
      .get(); 
} 

성공 했니?

답변

1

ExpressionEvaluatingRequestHandlerAdvice를 사용하여이 작업을 수행 할 수 있습니다. xml 구성에서는 다음과 같습니다.

<int-ftp:outbound-channel-adapter 
    channel="inputChannel" 
    session-factory="mockSessionFactory" 
    remote-directory="foo"> 
    <int-ftp:request-handler-advice-chain> 
     <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice"> 
      <property name="onSuccessExpression" value="payload.delete()" /> 
      <property name="successChannel" ref="afterSuccessDeleteChannel" /> 
      <property name="onFailureExpression" value="payload.renameTo(new java.io.File(payload.absolutePath + '.failed.to.send'))" /> 
      <property name="failureChannel" ref="afterFailRenameChannel" /> 
     </bean> 
    </int-ftp:request-handler-advice-chain> 
</int-ftp:outbound-channel-adapter> 
관련 문제