我在Spring Boot应用程序中使用Spring集成版本5.4.4。我需要从“server_sftp”目录下的子目录中获取所有的XML文件。为此,我使用带有mget命令的SFTP流入站通道适配器和SFTP出站网关。不幸的是,应用程序只从根目录(server_sftp)下载文件,而不从子目录下载文件。
我哪里出错了?
@Bean
@InboundChannelAdapter(channel = "downloadXmlFileInputChannel", poller = @Poller(fixedDelay = "300000"))
public MessageSource<InputStream> sftpXmlFileMessageSource() {
SftpStreamingMessageSource messageSource = new SftpStreamingMessageSource(template());
messageSource.setRemoteDirectory("server_sftp/");
return messageSource;
}
@Bean
public IntegrationFlow xmlFilesReadingFlow() {
return IntegrationFlows
.from(sftpXmlFileMessageSource(), e -> e.poller(Pollers.fixedDelay(Duration.ofSeconds(5))))
.handle(Sftp
.outboundGateway(template(), Command.MGET, "'server_sftp/*'")
.options(Option.RECURSIVE)
.autoCreateLocalDirectory(true)
.localDirectoryExpression("'../webapps/event_report_app-1.0/xmlFilesLocalDirectory/' + #remoteDirectory")
.localFilenameExpression("#remoteFileName.replaceFirst('sftpSource', 'localTarget')"))
.channel("downloadXmlFileOutputChannel")
.get();
}
@Bean
public PollableChannel downloadXmlFileInputChannel() {
return new QueueChannel();
}
@Bean
public DirectChannel downloadXmlFileOutputChannel() {
return new DirectChannel();
}
sftp服务器上的目录结构
使用带有递归MGET命令的出站网关来获取完整的树。
使用mget命令mget基于模式检索多个远程文件,并支持以下选项:
-p:保留远程文件的时间戳。
-R:递归地检索整个目录树。
-x:如果没有文件与模式匹配,则抛出异常(否则,返回空列表)。
-D:成功传输后删除每个远程文件。如果忽略传输,则不会删除远程文件,因为FileExistsMode是IGNORE,而本地文件已经存在。
mget操作产生的消息负载是List对象(即,List of File对象,每个对象代表一个检索到的文件)。
我已经检查了SFTP服务器,它是启动的。
我正在使用Spring集成流入站通道适配器,从远程SFTP获取流并解析内容进程的每一行。 我使用: 它现在可以工作了。但是我只能从目录中获取文件,但是我需要递归地从这个目录和子目录中获取文件,并解析每一行。 我注意到入站通道适配器是Sftp。内置适配器(sftpSessionFactory)。扫描仪(…) 。它可以扫描子目录。但我没有看到任何关于流式入站通道适配器的内容。 那么,如何在流入站通道适
文件上载返回“状态代码8-无效参数”响应。想知道是什么导致了这种情况。 我使用Chilkat sFTP在多个合作伙伴之间传输和接收文件,没有问题,但是对于一个新的合作伙伴,我看到以下错误。合作伙伴的技术团队正在询问是否正在调用被动连接,但我在Chilkat中看不到任何可以让我改变这一点的属性。 日志消息:
我在springboot项目1.5.10版中工作。释放 我正在为sftp使用Spring集成。以下gradle依赖项对我来说一切都很好 我还将普罗米修斯整合到模块中。 我已经完成了普罗米修斯的所有其他要求。但是我没有得到普罗米修斯的指标。 项目中的所有其他服务都在使用prometheus,但没有使用spring integration sftp,prometheus正在为所有这些服务工作。 我尝试
我当前的项目是基于Spring集成的。我正在使用spring Boot开发这个项目。 我的目标是使用Spring Integr来完成以下任务。 > 连接到SFTP 检查是否在本地特定文件夹中创建了目录 检查特定于(CSV的文件的合格文件扩展名 将所有内容从SFTP远程目录下载到本地目录 逐行读取本地目录中的文件,并提取特定的列信息。 你能给我一些建议吗? 我怎样才能得到换乘开始时间?注意:我必须将
我想把文件从远程服务器拉到我的本地服务器。我正在使用Spring Integration SFTP来拉文件。我有以下配置: 我不想在成功拉取后从remotedir中删除文件。这里发生的事情是每30秒,从remotedir的文件就会被拉到我的本地文件。我希望spring batch程序在第一次之后停止,不要再次拉出相同的文件。我怎样才能做到这一点?