Может ли spring -gration-aws для s3 дублировать подкаталоги корзины? - PullRequest
0 голосов
/ 05 октября 2018

Я использовал пример конфигурации из https://github.com/spring-projects/spring-integration-aws для адаптера входящего канала, но у меня есть корзина, которая будет содержать подкаталоги с CSV-файлами внутри.

Есть ли способ локально реплицировать корзинудревовидная структура?Мне удалось скопировать только файлы из подкаталогов, но в итоге они были созданы прямо в корне каталога, который я установил с помощью messageSource.setLocalDirectory (LOCAL_FOLDER);

Или есть способ определитьиз какого подкаталога файла пришел файл?

@Bean
@InboundChannelAdapter(value = "s3FilesChannel", poller = @Poller(fixedDelay = "100"))
public S3InboundFileSynchronizingMessageSource s3InboundFileSynchronizingMessageSource() {
    S3InboundFileSynchronizingMessageSource messageSource =
            new S3InboundFileSynchronizingMessageSource(s3InboundFileSynchronizer());
    messageSource.setAutoCreateLocalDirectory(true);
    messageSource.setLocalDirectory(LOCAL_FOLDER);
    messageSource.setLocalFilter(new AcceptOnceFileListFilter<File>());
    return messageSource;
}

1 Ответ

0 голосов
/ 05 октября 2018

Вам необходимо использовать

/**
 * Switch the local {@link FileReadingMessageSource} to use a custom
 * {@link DirectoryScanner}.
 * @param scanner the {@link DirectoryScanner} to use.
 * @since 5.0
 */
public void setScanner(DirectoryScanner scanner) {

и указать RecursiveDirectoryScanner: https://docs.spring.io/spring-integration/docs/current/reference/html/ftp.html#_recovering_from_failures:

Начиная с версии 5.0, адаптер входящего канала может создавать подкаталоги локальнов соответствии с созданным локальным именем файла.

Вам нужно извлечь из корзины, и S3InboundFileSynchronizingMessageSource восстановит структуру в локальном каталоге.

Примечание: вам нужно использовать, изКонечно, последний spring-integration-aws-2.0.0.RELEASE.

...