Spring Integration - SFTP FileSystemPersistentAcceptOnceFileListFilter не создает файл хранилища метаданных - PullRequest
0 голосов
/ 04 марта 2019

У меня настроено следующее InboundChannelAdapter:

@Bean
@InboundChannelAdapter(channel = "inbound", poller = [Poller(cron = "0/5 * * * * *")])
fun sftpHualingMessageSource(): MessageSource<File> {
    val metadataStore = PropertiesPersistingMetadataStore()
    metadataStore.setBaseDirectory(metadataStoreDirectory)

    val source = SftpInboundFileSynchronizingMessageSource(sftpInboundHualingFileSynchronizer())
    source.setLocalDirectory(File(sftpLocalDirectoryHualingDownload))
    source.setAutoCreateLocalDirectory(true)
    source.setLocalFilter(FileSystemPersistentAcceptOnceFileListFilter(metadataStore, "devices"))

    return source
}

Однако файл metadata-store.properties не создается.

Я также вижу странное поведение, которое, по моему мнению, связано,Когда сервер весенней загрузки перезапускается, он снова обрабатывает локальные копии файлов (csv).Затем он попытается переместить файл на удаленный сервер (что уже сделано), но если это не удастся, он удалит его из папки, в которой он также был перемещен.

1 Ответ

0 голосов
/ 04 марта 2019

Я нашел проблему.Мне нужно было настроить SftpInboundFileSynchronizer на использование того же хранилища метаданных, что и InboundChannelAdapter.

fileSynchronizer.setFilter(SftpPersistentAcceptOnceFileListFilter(metadataStore, "devices"))

Я создаю следующий bean-компонент для autowired, где это необходимо.

@Bean
fun metaDataStore(): PropertiesPersistingMetadataStore {
    val metadataStore = PropertiesPersistingMetadataStore()
    metadataStore.setBaseDirectory(metadataStoreDirectory)
    return metadataStore
}

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

...