Как оптимально обработать большое количество файлов, хранящихся в корзине S3, с помощью приложения Spring Integration, развернутого в pcf?

У нас есть приложение, разработанное с использованием классической среды Spring MVC (4.x) и Spring Integration Framework и развернутое в weblogic (у нас не было другого варианта), которое опрашивает файлы в монтировании nfs и обрабатывает их.

Теперь нас попросили отказаться от weblogic и использовать в качестве платформы PCF. Проблема, с которой мы столкнулись сейчас, заключается в том, что PCF не настроен на использование службы томов, поэтому нам нужно опрашивать файл из S3, например из хранилища, и обрабатывать его.

Поскольку приложение pcf имеет максимальное дисковое пространство 2 ГБ и ограничение памяти 2 ГБ (ограничение организации), каков оптимальный способ обработки этих файлов, хранящихся в S3, без их загрузки или, если нам нужно загрузить, как мы можем его оптимизировать.

Примечание. В рамках обработки этих заархивированных файлов мы должны извлечь некоторые файлы и повторно загрузить их обратно на S3, а некоторые мы должны отклонить.


person Life long learner    schedule 10.01.2021    source источник


Ответы (1)


Чтобы избежать локального копирования, рассмотрите возможность использования адаптера потокового входящего канала: https://github.com/spring-projects/spring-integration-aws/#streaming-inbound-channel-adapter

@Bean
@InboundChannelAdapter(value = "s3Channel", poller = @Poller(fixedDelay = "100"))
public MessageSource<InputStream> s3InboundStreamingMessageSource() {    
    S3StreamingMessageSource messageSource = new S3StreamingMessageSource(template());
    messageSource.setRemoteDirectory(S3_BUCKET);
    messageSource.setFilter(new S3PersistentAcceptOnceFileListFilter(new SimpleMetadataStore(),
                               "streaming"));       
    return messageSource;
}

Дополнительную информацию о логике адаптеров потокового канала см. в основных документах Spring Integration: https://docs.spring.io/spring-integration/reference/html/ftp.html#ftp-streaming

person Artem Bilan    schedule 11.01.2021