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

标签 java spring file spring-integration

我正在使用 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/

相关文章:

java - 播放压缩文件中的音频文件

java - 当 Broker 不可用时,消息不会出现在 Spring Integration (Kafka) ErrorChannel 中

java - Thymeleaf + Spring MVC 发布/重定向/获取

java - 表格单元格内的前导段落

java - 使用 SharedPreferences 进行自定义 ArrayList - 适配器或编辑器错误?

java - Spring JAXB - 使用模式验证解码 XML 文档

file - 大 (27GB) 文件的更快 grep 功能

file - Julia - 使用 readdlm 指定类型

java - 有效地从文本文件中解析和提取唯一值

java - 删除两个字符串之间以及出现在特定字符串之后的每个字符串