使用动态文件名将文件从FtpOutBoundGateway移到另一个远程位置

时间:2018-09-27 09:26:08

标签: java spring file spring-integration

我正在使用FtpOutBoundGateway将一个文件移动到另一个远程位置。按照spring文档的说明,表达式属性用于提供“从”路径,而重命名表达式用于“到”路径。 我正在提供静态路径,并且运行良好,我的问题是如何为重命名表达式提供动态名称?

这是我的代码

@Bean
@ServiceActivator(inputChannel = "ftpChannel")
public MessageHandler handler() {
    FtpOutboundGateway ftpOutboundGateway =
            new FtpOutboundGateway(sf(), "mv", "payload");
    ftpOutboundGateway.setRenameExpressionString("/processed/StaticFilename.xml");     
    ftpOutboundGateway.setOutputChannelName("results");
    return ftpOutboundGateway;
}

这里是消息传递网关接口:

@MessagingGateway
public interface Gate {    
    @Gateway(requestChannel = "ftpChannel")
    void sendToFtp(String filePath, @Header("filename") String filename);

}

是否可以动态设置ExpressionString?

1 个答案:

答案 0 :(得分:1)

消息“有效负载”具有要移动的文件的文件名。这样就可以了。

ftpOutboundGateway.setRenameExpressionString("'/processed/'+ payload");

如果您想提供其他名称,则原名称以外的其他名称可以在标头中传递值并在此处使用。