如何使用 Spring Integration 在 IntegrationFlow 链中通过 SFTP 上传文件?
How to upload file via SFTP inside an IntegrationFlow chain using Spring Integration?
我想做的是检查本地源目录中的新文件,进行简单的转换,然后使用 Spring 集成通过 SFTP 将文件发送到远程服务器。
我正在使用文件适配器轮询我的源目录以查找新文件。现在,我想在转换后立即将文件上传到远程服务器。是否有一个消息处理程序可以完全执行此操作,以便我可以在我的 IntegrationFlow 链中触发上传,或者我应该编写文件并在单独的进程中通过 SFTP 上传它(仅为上传进程创建计划的作业)?
@Bean
public IntegrationFlow integrationFlow() {
return IntegrationFlows.from(fileReader(), spec -> spec.poller(Pollers.fixedDelay(1000)))
.transform(transformer, "transform")
.handle( message handler )
.get();
}
@Bean
public FileReadingMessageSource fileReader() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setDirectory(new File("src/main/resources/file/outbox"));
return source;
}
更新代码:
@Bean
public IntegrationFlow integrationFlow() {
return IntegrationFlows.from(fileReader(), spec -> spec.poller(Pollers.fixedDelay(1000)))
.transform(transformer, "transform")
.handle(Sftp.outboundAdapter(sftpSessionFactory)
.remoteDirectory(sftpRemoteDirectory)
)
.get();
}
你走在正确的轨道上。确实有一个 SFTP 通道适配器可以将消息的有效负载作为文件上传到远程目录:
handle(Sftp.outboundAdapter(sessionFactory(), FileExistsMode.FAIL)
在 Spring 集成文档的 SFTP 章节中查看更多信息:
https://docs.spring.io/spring-integration/docs/current/reference/html/sftp.html#sftp-outbound
我想做的是检查本地源目录中的新文件,进行简单的转换,然后使用 Spring 集成通过 SFTP 将文件发送到远程服务器。
我正在使用文件适配器轮询我的源目录以查找新文件。现在,我想在转换后立即将文件上传到远程服务器。是否有一个消息处理程序可以完全执行此操作,以便我可以在我的 IntegrationFlow 链中触发上传,或者我应该编写文件并在单独的进程中通过 SFTP 上传它(仅为上传进程创建计划的作业)?
@Bean
public IntegrationFlow integrationFlow() {
return IntegrationFlows.from(fileReader(), spec -> spec.poller(Pollers.fixedDelay(1000)))
.transform(transformer, "transform")
.handle( message handler )
.get();
}
@Bean
public FileReadingMessageSource fileReader() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setDirectory(new File("src/main/resources/file/outbox"));
return source;
}
更新代码:
@Bean
public IntegrationFlow integrationFlow() {
return IntegrationFlows.from(fileReader(), spec -> spec.poller(Pollers.fixedDelay(1000)))
.transform(transformer, "transform")
.handle(Sftp.outboundAdapter(sftpSessionFactory)
.remoteDirectory(sftpRemoteDirectory)
)
.get();
}
你走在正确的轨道上。确实有一个 SFTP 通道适配器可以将消息的有效负载作为文件上传到远程目录:
handle(Sftp.outboundAdapter(sessionFactory(), FileExistsMode.FAIL)
在 Spring 集成文档的 SFTP 章节中查看更多信息:
https://docs.spring.io/spring-integration/docs/current/reference/html/sftp.html#sftp-outbound