当前位置: 首页 > 知识库问答 >
问题:

下载文件时如何停止spring sftp入站通道适配器轮询

曾宏毅
2023-03-14
 <int:channel id="recieveChannel">
        <int:queue />
    </int:channel>

    <int-sftp:inbound-channel-adapter 
        session-factory="sftpSessionFactory"
        local-directory="C:\test-outbound\"
        channel="recieveChannel"
        filename-regex=".*\.txt$"            
        remote-directory="/opt/IInsurer/messages/" 
        >
        <int:poller fixed-rate="10000" receive-timeout="10000"></int:poller>
    </int-sftp:inbound-channel-adapter>

我也有弹出绑定网关适配器,但它也是一样的。我会非常感谢您的帮助。非常感谢

共有1个答案

林劲
2023-03-14

我使用start()方法启动了入站适配器。进一步使用单独的通道来读取和接收具有相关超时的消息。如果在超时期间没有收到任何消息,我将使用stop()停止适配器。

适配器配置

<int-sftp:inbound-channel-adapter   id="RemoteTestingInboundChannelAdapter"  
        channel="requestChannel"
        session-factory="sftpSessionFactoryRemoteTesting" 
        local-directory="${sync.dir}"
        remote-directory="${RemoteTesting.local.dir}"
        auto-startup="false" 
        temporary-file-suffix=".writing"
        filter = "compositeFilterRemoteTesting" 
        delete-remote-files="false"> 
        <int:poller fixed-rate="${RemoteTesting.poller}" max-messages-per-poll="${RemoteTesting.maxMessagesPerPoll}"/>
     </int-sftp:inbound-channel-adapter>

主类

adapter.start();

QueueChannel localFileChannel = context.getBean("requestChannel", QueueChannel.class);

Message<?> received = localFileChannel.receive();

while (received!=null)
                received = localFileChannel.receive(timeOutPeriod);
adapter.stop();
 类似资料:
  • 我们的应用程序使用一个Spring Integration轮询一个目录,以便在将文件丢弃到该目录时侦听该目录。然后,Spring Integration启动一个Spring批处理作业,将要处理的文件的路径和名称交给该作业。 显然,即使在Spring批处理作业处理了一个文件之后,文件轮询器仍在继续运行。因此,Spring上下文保持打开,应用程序不会终止。是否有一种方法,通过编程或配置(更好),在一个

  • 我目前有一个Rabbit MQ Broker设置,带有直接交换,我使用Spring Integration来生成和使用队列中的消息。我使用的是责任链模式,其中我使用SI将消耗的消息从一个POJO传递到另一个POJO。为此,我使用了一个Spring Integration入站通道适配器。这要求它具有对轮询器的引用。 如何移除轮询器,使其不在轮询机制上工作,而是使用回调,以便一旦消息可用,它将从队列中

  • 如果我创建一个SFTP入站通道适配器,并使用在SFTP中配置为channel属性的通道发送一些文件。文件将传输到SFTP远程目录本地目录,还是直接从通道流到本地目录

  • 问题内容: Spring Integration FTP中的入站通道适配器和出站通道适配器之间有什么区别?我应该使用哪一个?何时使用? 我从文档中了解到,出站可以发送任何类型的文件(例如byte [],String,java.io.File),但入站仅限于文件类型。那仅仅是区别还是其他? 问题答案: 我建议您首先阅读理论 。 任何Inbound适配器都旨在从外部系统获取数据。Outbound-放置

  • 我是否可以使用SFTP入站通道适配器递归轮询远程目录,或者我必须有多个入站通道适配器,每个子目录一个。 我的用例是,每个租户在上传目录中都有一个子目录,他们可以在其中放置csv文件,我们的应用程序应该将上传目录池化,以查看是否有租户有新文件,然后开始在本地下载。在本地,它将具有相同的文件夹结构。 远程: /upload/tenant2/*.csv