我们需要使用apache camel来使用Azure存储容器中的blob文件列表。apache camel中的azure-blob要求blob名称与容器名称沿着传递。是否有任何方法可以从uri动态传递blob名称?
dgiusagp1#
根据Apache camel和azure blob here的官方文档,blob名称是必需的:
URI格式
azure-blob://accountName/containerName[/blobName][?options]
from("azure-blob:/camelazure/container1/blockBlob"). to("file://blobdirectory");
当你下载多个blob时,一个实际的变通方法/Hack可能会对你有用,那就是为你的blob使用一个名称列表,使用URI中的blob名称作为一个变量值,你可以在其中插入blob名称,然后为你拥有的每个blob生成一个URL。我也建议在上面的Github repo链接中为Davclaus@提交一个评论,因为他直接参与了这个项目。
lhcgjxsq2#
如果文件名遵循某些命名约定/扩展名,您可能会传递regex模式以从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(搜索正则表达式选项)
2条答案
按热度按时间dgiusagp1#
根据Apache camel和azure blob here的官方文档,blob名称是必需的:
URI格式
当你下载多个blob时,一个实际的变通方法/Hack可能会对你有用,那就是为你的blob使用一个名称列表,使用URI中的blob名称作为一个变量值,你可以在其中插入blob名称,然后为你拥有的每个blob生成一个URL。
我也建议在上面的Github repo链接中为Davclaus@提交一个评论,因为他直接参与了这个项目。
lhcgjxsq2#
如果文件名遵循某些命名约定/扩展名,您可能会传递regex模式以从Azure获取如下所示的blob。
上面的URI将获取名称为BLOB_COR_1111.zip、BLOB_COR_4444.zip等的文件。您可以根据需要更新正则表达式模式。
参考:https://camel.apache.org/components/3.7.x/azure-storage-blob-component.html#_uri_options(搜索正则表达式选项)