Ftp исходящий адаптер |Не в состоянии писать в ftp - PullRequest
0 голосов
/ 06 декабря 2018
@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 не может полностью записать файл.Пожалуйста помоги.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

Спасибо Гэри за ваш отзыв.

Окончательно установил его следующим образом:

  1. factory.setClientMode (2) - пассивный режим
  2. брандмауэр (брандмауэр Windows), разрешено 0-65000 портов (исходящий) для TCP на ftp-сервере

работал как шарм.

...