【发布时间】:2018-12-06 11:55:56
【问题描述】:
@EnableIntegration
@Configuration
public class RtwEmploymentComplianceFlow {
@Bean
DefaultFtpSessionFactory rtwFtpFileSessionFactory() {
DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
sf.setPort(21);
sf.setUsername("a-asdf");
sf.setPassword("asdf@123");
sf.setHost("asdf.ftp.org");
return sf;
}
@Autowired
TiffToPdfConverter tiffToPdf;
@Bean
public IntegrationFlow rtwFlow(
@Value("${rtw-input-directory}") File rtwFolder, DefaultFtpSessionFactory rtwFtpFileSessionFactory) {
GenericTransformer<File, Message<String>> pdfFileConverter = (File source) -> {
return MessageBuilder.withPayload("hello").setHeader(FileHeaders.FILENAME, source.getName().split("\\.")[0] + ".txt").build();
};
return IntegrationFlows
.from(Files.inboundAdapter(rtwFolder)
.autoCreateDirectory(true)
.preventDuplicates(true)
.patternFilter("*.tif"),
poller -> poller.poller(pm -> pm.fixedDelay(1000)))
.transform(File.class, pdfFileConverter)
.handle(Ftp.outboundAdapter(rtwFtpFileSessionFactory)
.remoteDirectory("Guru")
.useTemporaryFileName(false)
.fileNameGenerator(message -> {
Object o = message.getHeaders().get(FileHeaders.FILENAME);
String fileName = String.class.cast(o);
System.out.println("output FileName is: " + fileName);
return fileName;
})
)
.get();
}
}
上面的代码开始在 ftp 站点创建一个 sample.txt.writing 文件,但是大小保持 0KB 大约 15 秒,然后文件消失了。
没有引发异常。
不确定为什么 ftp 无法完全写入文件。请帮忙。
提前致谢。
【问题讨论】:
-
这与clientMode有关,我尝试将其设置为2并得到连接超时异常。谁能解释一下这个设置是什么?
-
slacksite.com/other/ftp.html一般来说,如果有防火墙,就需要被动。
标签: spring-boot ftp spring-integration