【发布时间】:2018-11-29 12:26:13
【问题描述】:
我们有一个场景,我们需要使用 apache camel 在 azure 存储容器中使用 blob 文件列表。 apache camel 中的 azure-blob 要求将 blob 名称与容器名称一起传递。有没有办法从uri动态传递blob名称?
【问题讨论】:
-
提供的答案对您有帮助吗?
标签: apache-camel azure-blob-storage
我们有一个场景,我们需要使用 apache camel 在 azure 存储容器中使用 blob 文件列表。 apache camel 中的 azure-blob 要求将 blob 名称与容器名称一起传递。有没有办法从uri动态传递blob名称?
【问题讨论】:
标签: apache-camel azure-blob-storage
根据 Apache camel 和 azure blobs here 的官方文档,需要一个 blob 名称:
URI 格式
azure-blob://accountName/containerName[/blobName][?options]
例如,为了从位于 camelazure 存储帐户的 container1 上的公共块 blob blockBlob 下载 blob 内容,请使用以下 sn-p:
from("azure-blob:/camelazure/container1/blockBlob").
to("file://blobdirectory");
在下载多个 blob 时可能对您有用的实际解决方法/Hack 是为您的 blob 使用名称列表,使用 URI 中的 blob 名称作为变量值,您可以在其中插入blob 名称,然后为您拥有的每个 blob 生成一个 URl。
我还建议在上面的 Github 存储库链接中为 Davclaus@ 提交评论,因为他直接参与了该项目。
【讨论】:
共享它以供将来参考,如果文件名遵循某些命名约定/扩展名,您可能可以通过正则表达式模式从 Azure 获取 blob,如下所示。
azure-storage-blob://accountName/containerName?accessKey=xxxxx==&operation=listBlobs®ex=BLOB_COR_\d{4}.zip
上面的 URI 将获取名称为 BLOB_COR_1111.zip、BLOB_COR_4444.zip 等的文件。您可以根据需要更新正则表达式模式。
参考:https://camel.apache.org/components/3.7.x/azure-storage-blob-component.html#_uri_options(搜索正则表达式选项)
【讨论】: