我正在使用 FtpOutBoundGateway 将一个文件移动到另一个远程位置。根据 spring 文档,表达式属性用于提供“from”路径,重命名表达式用于“to”路径。 我提供了一个静态路径,它工作正常,我的问题是如何为重命名表达式提供动态名称?
这是我的代码
@Bean
@ServiceActivator(inputChannel = "ftpChannel")
public MessageHandler handler() {
FtpOutboundGateway ftpOutboundGateway =
new FtpOutboundGateway(sf(), "mv", "payload");
ftpOutboundGateway.setRenameExpressionString("/processed/StaticFilename.xml");
ftpOutboundGateway.setOutputChannelName("results");
return ftpOutboundGateway;
}
这是消息网关接口(interface):
@MessagingGateway
public interface Gate {
@Gateway(requestChannel = "ftpChannel")
void sendToFtp(String filePath, @Header("filename") String filename);
}
有没有办法动态设置ExpressionString?
最佳答案
消息“有效负载”具有正在移动的文件的文件名。这样就可以完成任务了。
ftpOutboundGateway.setRenameExpressionString("'/processed/'+ payload");
如果您想提供其他名称原始名称,则可以在 header 中传递值并在此处使用该值。
关于java - 使用动态文件名将文件从 FtpOutBoundGateway 移动到另一个远程位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533700/