S3PersistentAcceptOnceFileListFilter создает сообщения для существующих / синхронизированных файлов при перезапуске приложения - PullRequest
0 голосов
/ 03 октября 2018

кто-нибудь сталкивался с этим?в основном я хочу обработать файл один раз, даже если приложение отклонено

@Bean
public S3InboundFileSynchronizer s3InboundFileSynchronizer() throws Exception {
    S3InboundFileSynchronizer synchronizer = new S3InboundFileSynchronizer(amazonS3());
    synchronizer.setDeleteRemoteFiles(false);
    synchronizer.setPreserveTimestamp(true);
    synchronizer.setRemoteDirectory(sourceBucket + "/dir/");
    synchronizer.setFilter(new S3PersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "simpleMetadataStore"));
    return synchronizer;
}

private AmazonS3 amazonS3() throws Exception {      
    return clientFactory.getClient(AmazonS3.class);
}

@Bean
@InboundChannelAdapter(value = "s3FilesChannel", poller = @Poller(fixedDelay = "5000"))
public S3InboundFileSynchronizingMessageSource s3InboundFileSynchronizingMessageSource() throws Exception {
    S3InboundFileSynchronizingMessageSource messageSource =
            new S3InboundFileSynchronizingMessageSource(s3InboundFileSynchronizer());
    messageSource.setAutoCreateLocalDirectory(true);
    messageSource.setLocalDirectory(new File("c:/temp/"));
    messageSource.setLocalFilter(new FileSystemPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "fsSimpleMetadataStore"));             
    return messageSource;
}

1 Ответ

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

Ваша проблема в том, что вы используете в памяти SimpleMetadataStore, поэтому после перезапуска приложения вы теряете всю хранящуюся там информацию.

Рассмотрите возможность использования некоторой постоянной реализации хранилища, например, для AWS у нас есть DynamoDbMetadataStore: https://github.com/spring-projects/spring-integration-aws#metadata-store-for-amazon-dynamodb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...