Spring Integration с хранилищем BLOB-объектов Azure с использованием XML - PullRequest
0 голосов
/ 11 февраля 2019

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

<bean id="baseDirectory" class="java.lang.String">
    <constructor-arg value="${HOME}/user/files/"/>
</bean>

<file:inbound-channel-adapter id="testFiles" directory="#{baseDirectory}" filename-regex="^(test_filename.*)-(\d+)\.csv" comparator="someFileOrderComparator">
    <int:poller fixed-rate="6000"/>
</file:inbound-channel-adapter>

<file:outbound-gateway request-channel="testFiles" reply-channel="testFile" directory="#{baseDirectory}/processing" delete-source-files="true”/>

<int:service-activator input-channel="testFile" ref="someServiceTask" method="executeTask”/>

Это пример того, как мы можем читать файлы из файловой системы.

Предположим, я хочу прочитать файлы из хранилища BLOB-объектов Azure, скажем, у меня есть контейнер X, которыйсодержит папку A. Используя имя учетной записи и ключ доступа к учетной записи, как я могу сказать Spring Integration для чтения файлов из папки A контейнера X.

Конфигурация XML предпочтительнее.

1 Ответ

0 голосов
/ 11 февраля 2019

Я столкнулся с чем-то похожим на проблему, с которой вы столкнулись.Вот как я решил это -

  1. создал компонент CloudStorageAccount (Вы можете легко конвертировать его в конфигурацию xml. Я не привык к настройке xml.) -

    @Bean CloudStorageAccount getAccount(String connString){ return CloudStorageAccount.parse(connString); }

  2. Используется AzureStorageProtocolResolver -

AzureStorageProtocolResolver fileResolver = new AzureStorageProtocolResolver(); File resolvedFile = fileResolver.resolve("azure-blob://<containerName>/<Path to File(e.g. "lib/myfile.jar")>").getFile();

AzureStorageProtocolResolver является классом Azure и будет использовать компонент StorageAccount из beanfactory для внутреннего использования.См. - https://github.com/Microsoft/spring-cloud-azure/blob/master/spring-cloud-azure-storage/src/main/java/com/microsoft/azure/spring/cloud/storage/AzureStorageProtocolResolver.java

Есть и другой способ использования Azure Spring Boot Starter .Смотри - https://github.com/Microsoft/azure-spring-boot/tree/master/azure-spring-boot-starters/azure-storage-spring-boot-starter

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