@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();
}
}
Приведенный выше код начинает создание файла sample.txt.writing на ftp-сайте, но его размер остается 0 КБ примерно на 15 секунд, а затем файл исчезает.
Нет никаких исключений.
Не уверен, почему ftp не может полностью записать файл. Пожалуйста помоги.
Заранее спасибо.




Спасибо Гэри за ваш отзыв.
В конце концов решил это следующим образом:
работал как шарм.
это должно что-то делать с clientMode, я попытался установить его на 2 и получил исключение тайм-аута соединения. Может кто-нибудь объяснить, что это за настройка?