Spring boot Ftp出站适配器|无法写入Ftp @使能集成 @配置 公共类RTWEEmploymentComplianceFlow{ @豆子 DefaultFtpSessionFactory rtwFtpFileSessionFactory(){ DefaultFtpSessionFactory sf=新的DefaultFtpSessionFactory(); sf.设置端口(21); sf.setUsername(“a-asdf”); sf.setPassword(“asdf@123"); setHost(“asdf.ftp.org”); 返回sf; } @自动连线 tiffToPdf转换器tiffToPdf; @豆子 公共集成流rtwFlow( @值(“${rtw input directory}”)文件rtwFolder,默认FTPSessionFactory RTWFTPFILESSessionFactory){ GenericTransformer PdfileConverter=(文件源)->{ 返回MessageBuilder.withPayload(“hello”).setHeader(FileHeaders.FILENAME,source.getName().split(“\\”)[0]+.txt”).build(); }; 返回积分流 .from(文件.inboundAdapter(rtwFolder) .autoCreateDirectory(true) .防止重复(正确) .patternFilter(“*.tif”), 轮询器->轮询器.轮询器(pm->pm.fixedDelay(1000))) .transform(File.class,pdfFileConverter) .handle(Ftp.outboundAdapter(rtwFtpFileSessionFactory) .remoteDirectory(“专家”) .useTemporaryFileName(false) .fileNameGenerator(消息->{ 对象o=message.getHeaders().get(FileHeaders.FILENAME); 字符串文件名=String.class.cast(o); System.out.println(“输出文件名为:“+FileName”); 返回文件名; }) ) .get(); } }
上面的代码开始在ftp站点中创建一个sample.txt.writing文件,但大小保持为0KB大约15秒,然后文件消失 没有提出任何例外情况 不确定ftp为什么无法完全写入文件。请帮忙Spring boot Ftp出站适配器|无法写入Ftp @使能集成 @配置 公共类RTWEEmploymentComplianceFlow{ @豆子 DefaultFtpSessionFactory rtwFtpFileSessionFactory(){ DefaultFtpSessionFactory sf=新的DefaultFtpSessionFactory(); sf.设置端口(21); sf.setUsername(“a-asdf”); sf.setPassword(“asdf@123"); setHost(“asdf.ftp.org”); 返回sf; } @自动连线 tiffToPdf转换器tiffToPdf; @豆子 公共集成流rtwFlow( @值(“${rtw input directory}”)文件rtwFolder,默认FTPSessionFactory RTWFTPFILESSessionFactory){ GenericTransformer PdfileConverter=(文件源)->{ 返回MessageBuilder.withPayload(“hello”).setHeader(FileHeaders.FILENAME,source.getName().split(“\\”)[0]+.txt”).build(); }; 返回积分流 .from(文件.inboundAdapter(rtwFolder) .autoCreateDirectory(true) .防止重复(正确) .patternFilter(“*.tif”), 轮询器->轮询器.轮询器(pm->pm.fixedDelay(1000))) .transform(File.class,pdfFileConverter) .handle(Ftp.outboundAdapter(rtwFtpFileSessionFactory) .remoteDirectory(“专家”) .useTemporaryFileName(false) .fileNameGenerator(消息->{ 对象o=message.getHeaders().get(FileHeaders.FILENAME); 字符串文件名=String.class.cast(o); System.out.println(“输出文件名为:“+FileName”); 返回文件名; }) ) .get(); } },spring-boot,ftp,spring-integration,Spring Boot,Ftp,Spring Integration,上面的代码开始在ftp站点中创建一个sample.txt.writing文件,但大小保持为0KB大约15秒,然后文件消失 没有提出任何例外情况 不确定ftp为什么无法完全写入文件。请帮忙 提前谢谢 感谢Gary的反馈 最后通过以下方式解决: factory.setClientMode(2)——被动模式 防火墙(windows防火墙),ftp服务器上TCP允许0-65000个端口(出站) 工作得很有魅力 这与clientMode有关,我尝试将其设置为2,但出现连接超时异常。有人能解释一下这个设置是
提前谢谢 感谢Gary的反馈 最后通过以下方式解决:
工作得很有魅力 这与clientMode有关,我尝试将其设置为2,但出现连接超时异常。有人能解释一下这个设置是什么吗?一般来说,如果涉及防火墙,则需要被动。
@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();
}
}