【问题标题】:How to delete File from SFTP while using inbound-streaming-channel-adapter如何在使用入站流通道适配器时从 SFTP 中删除文件
【发布时间】:2020-11-10 09:24:26
【问题描述】:

您好,我如何在使用文件后从 SFTP 中删除源文件。下面是我的配置。它正确地使用文件并处理它。但在下一次民意调查中,它的读数再次相同。我喜欢删除源文件或避免再次读取相同的文件。我使用的是 4.3.13

 <int-sftp:inbound-streaming-channel-adapter id="sftpAdapter"
                                  session-factory="sftpSessionFactory"
                                  filename-pattern="*.xml"
                                  channel="receiveChannel"
                                  remote-directory="/tmp/charge/">
</int-sftp:inbound-streaming-channel-adapter>

<int:poller fixed-rate="30000" max-messages-per-poll="1" id="ChargePoller"/>

<int:channel id="receiveChannel">
    <int:queue/>
</int:channel>

<int:stream-transformer id="withCharset" charset="UTF-8"    input-channel="receiveChannel" output-channel="fileInString"  />

<int:service-activator id="ChargeFeedListener" input-channel="fileInString"  method="onMessage" >
    <bean class="listener.ChargeFeedListener">
        <constructor-arg name="ChargeService" ref="ChargeService"/>
    </bean>
</int:service-activator>

【问题讨论】:

    标签: java spring spring-integration sftp


    【解决方案1】:

    &lt;int-sftp:inbound-streaming-channel-adapter&gt; 将此信息存储到它生成的远程文件流的消息头中:

     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_HOST_PORT, session.getHostPort())
                        .setHeader(FileHeaders.REMOTE_FILE_INFO,
                                this.fileInfoJson ? file.toJson() : file);
    

    注意FileHeaders.REMOTE_DIRECTORYFileHeaders.REMOTE_FILE 标头。

    这样的信息可以用于&lt;int-sftp:outbound-gateway&gt;command="rm" 作为remote-filename-generator-expression="headers[file_remoteDirectory]+'/'+headers[file_remoteFile]"

    此网关可用作fileInString 消息通道的第二个订阅者,您应该将其设置为&lt;publish-subscribe-channel&gt;https://docs.spring.io/spring-integration/docs/current/reference/html/core.html#channel-implementations-publishsubscribechannel

    另请参阅文档:https://docs.spring.io/spring-integration/docs/current/reference/html/sftp.html#sftp-streaming-java-config

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多