使用XML

时间:2019-02-11 13:20:29

标签: spring azure spring-integration

使用文件适配器,我有一个入站通道以固定的速率轮询,从目录中读取文件,过滤某些文件,最后对它们进行排序,然后将它们发送到出站网关,出站网关再次移动文件以供服务bean处理。

<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”/>

这是我们如何从文件系统读取文件的示例。

假设我想从Azure Blob存储中读取文件,说我有一个包含文件夹A的容器X。如何使用帐户名和帐户访问密钥告诉Spring Integration从容器X的文件夹A中读取文件

首选XML配置。

1 个答案:

答案 0 :(得分:1)

我遇到了与您面临的问题类似的事情。 这是我解决的方法-

  1. 创建了一个 CloudStorageAccount 的bean(您可以轻松地将其转换为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类,将在内部使用beanfactory的StorageAccount bean。 请参阅-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