Ftp出站适配器|无法写入Ftp


@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.writeing文件,但大小保持0KB约15秒,然后文件消失。

没有任何例外。

不确定ftp无法完全写入文件的原因。请帮忙。

提前谢谢。

感谢Gary的反馈。

最终以以下方式解决:

  1. factory.setClientMode(2(--被动模式
  2. 防火墙(windows防火墙(,ftp服务器上允许0-65000个TCP端口(出站(

工作起来很有魅力。