Regex и SftpStreamingInboundChannelAdapterSpec - PullRequest
0 голосов
/ 10 октября 2019

Мы попытались использовать адаптер входящего потока Sftp для загрузки данных в нашу базу данных mongo.

Мы получаем файл в соответствии с шаблоном SRMTparty_create_20191010033028.csv на сервере sftp.

Когда я настраиваю регулярное выражение или простойфильтр шаблонов файлов, они никогда не будут найдены.

Если я поставлю полное имя файла, все в порядке.

Чтобы исключить проблему с регулярным выражением, я попробовал его с шаблоном в простом привет-мировом классе.

Pattern p = Pattern.compile("(SRMTparty_create_)(.*)(\\.csv)");
String s = "SRMTparty_create_20191010033028.csv";
Matcher match = p.matcher(s);
System.out.println(match.find());

все в порядке.

Мой код указан ниже:

    @Bean(name = "sftpInboundPartyAdapter")
    public SftpStreamingInboundChannelAdapterSpec sftpInboundAdapter() {
        return Sftp.inboundStreamingAdapter(remoteFileTemplate)
                   .remoteDirectory(sftpRemoteDirectory)
                   .patternFilter(sftpRemoteFileName)
                   .maxFetchSize(1);
    }

Я надеюсь, что кто-нибудь может мне помочь!

Хорошего дня.

1 Ответ

0 голосов
/ 14 октября 2019

Я думаю, вам нужно больше исследовать, что такое AntPathMatcher - подход, используемый за этим SftpSimplePatternFileListFilter:

 * <p>Part of this mapping code has been kindly borrowed from <a href="https://ant.apache.org">Apache Ant</a>.
 *
 * <p>The mapping matches URLs using the following rules:<br>
 * <ul>
 * <li>{@code ?} matches one character</li>
 * <li>{@code *} matches zero or more characters</li>
 * <li>{@code **} matches zero or more <em>directories</em> in a path</li>
 * <li>{@code {spring:[a-z]+}} matches the regexp {@code [a-z]+} as a path variable named "spring"</li>
 * </ul>
...