【问题标题】:Spring integration how can I move a file after FTP'ing it?Spring集成FTP后如何移动文件?
【发布时间】:2017-09-08 17:06:46
【问题描述】:

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

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    Streaming Channel Adapter 返回的消息是这样的:

     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();
    

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

    因此,您绝对可以使用&lt;int-ftp:outbound-gateway&gt; 来执行MV 命令,并在请求消息的标头中包含该信息。

    【讨论】:

    • 你会说java方法比xml更容易吗?到目前为止,我所做的一切都是在 xml 中,但我愿意在 java 中定义 bean。
    • 是的!这是可以做到的!请参阅 Java DSL 方法:github.com/spring-projects/spring-integration-java-dsl/wiki/…
    • 我看到了与我的 FTP 代码等效的 Java DSL(返回一个 IntegrationFlow )。尽管您的代码适合于此,我仍然有些困惑。该示例返回一个 IntegrationFlow,但这会返回一个 MessageBuilderFactory
    • ???我向您展示了框架中的代码:github.com/spring-projects/spring-integration/blob/master/…。作为确认您确实拥有下游消息中的所有信息。我没有向您展示目标解决方案。这已经超出了 StackOverflow 的范围。这里没有人会为你写代码。
    • 我想我现在明白了。谢谢你的例子。
    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2012-01-09
    • 2015-07-21
    相关资源
    最近更新 更多