2016-09-09 3 views

ответ

1

Что-то вроде этого:

@Bean 
    public FtpOutboundGatewaySpec ftpOutboundGateway() { 
     return Ftp.outboundGateway(this.ftpSessionFactory, 
       AbstractRemoteFileOutboundGateway.Command.MGET, "payload") 
       .options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE) 
       .regexFileNameFilter("(subFtpSource|.*1.txt)") 
       .localDirectoryExpression("@ftpServer.targetLocalDirectoryName + #remoteDirectory") 
       .localFilenameExpression("#remoteFileName.replaceFirst('ftpSource', 'localTarget')"); 
    } 

    @Bean 
    public IntegrationFlow ftpMGetFlow(AbstractRemoteFileOutboundGateway<FTPFile> ftpOutboundGateway) { 
     return f -> f 
       .handle(ftpOutboundGateway) 
       .channel(remoteFileOutputChannel()); 
    } 

    @Bean 
    public PollableChannel remoteFileOutputChannel() { 
     return new QueueChannel(); 
    } 

копирования/вставки из проекта test-cases.

+0

Как указать удаленный каталог, из которого я должен получить файлы? –

+0

Это выражение для второго аргумента для фабрики 'Ftp.outboundGateway()'. Обычно мы указываем удаленный путь в сообщении запроса. Вот почему в моем примере это как «полезная нагрузка» ' –

+0

, можете ли вы дать мне образец? Как должен быть второй аргумент, если мой sftp mget должен быть запущен из папки/tmp/remoteDirectory? Кроме того, какое сообщение запроса? Разве это не срабатывает автоматически, если регулярное выражение находит совпадение? –