Spring集成如何在FTP之后移动文件?

时间:2017-09-08 17:06:47

标签: spring-integration

我使用Spring Integration来FTP文件。我处理完该文件后,虽然我想将文件从FTP目录移动到FTP服务器上的存档目录。我怎么能这样做?

我认为解决方案可能涉及使用文件名丰富方法标题,但它看起来不像流通道适配器使其可用(因为它只是一个流而不是文件/路径)。

<int-ftp:inbound-streaming-channel-adapter
    auto-startup="true" id="ftpListener2" channel="ftpChannel"
    session-factory="ftpSessionFactory" remote-directory="/data/crp/prd/ald/01/stuff/archive"
    filename-pattern="ADX_I.2017083100100.tar.gz">
    <integration:poller fixed-rate="5000"
        max-messages-per-poll="-1" />
</int-ftp:inbound-streaming-channel-adapter>

1 个答案:

答案 0 :(得分:1)

从流媒体通道适配器返回的消息如下:

 return getMessageBuilderFactory()
                    .withPayload(session.readRaw(remotePath))
                    .setHeader(IntegrationMessageHeaderAccessor.CLOSEABLE_RESOURCE, session)
                    .setHeader(FileHeaders.REMOTE_DIRECTORY, file.getRemoteDirectory())
                    .setHeader(FileHeaders.REMOTE_FILE, file.getFilename())
                    .setHeader(FileHeaders.REMOTE_FILE_INFO,
                            this.fileInfoJson ? file.toJson() : file)
                    .build();

因此,您拥有与远程文件相关的所有信息。

因此,您绝对可以使用<int-ftp:outbound-gateway>在请求消息的标头中使用该信息执行MV命令。