Что-то вроде этого:
@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.
Как указать удаленный каталог, из которого я должен получить файлы? –
Это выражение для второго аргумента для фабрики 'Ftp.outboundGateway()'. Обычно мы указываем удаленный путь в сообщении запроса. Вот почему в моем примере это как «полезная нагрузка» ' –
, можете ли вы дать мне образец? Как должен быть второй аргумент, если мой sftp mget должен быть запущен из папки/tmp/remoteDirectory? Кроме того, какое сообщение запроса? Разве это не срабатывает автоматически, если регулярное выражение находит совпадение? –