使用Camel v4 Azure Blob组件上传时如何设置Blob索引标签?
Camel v4 Azure Blob组件设置Blob索引标签解决方案
当前使用Camel v4 azure-storage-blob组件上传Blob时,可正常设置元数据标签,但无法通过x-ms-tags请求头设置Blob索引标签,以下是可行的解决方式:
方式一:通过URI参数动态传递标签
在toD的目标URI中添加tags参数,使用表达式引用Exchange中的头信息或常量值,标签格式为键:值&键:值的字符串:
.toD("azure-storage-blob://{{azbs.discinbounddocs.write.account}}/" + "{{azbs.discinbounddocs.write.container}}?blobName=${header." + FtpConstants.FILE_ABSOLUTE_PATH + "}&operation=uploadBlockBlob&tags=${header.BLOB_INDEX_TAGS}", 0)
使用前需在Exchange头中预先设置BLOB_INDEX_TAGS,比如:
.setHeader("BLOB_INDEX_TAGS", constant("department:marketing&priority:high"))
方式二:通过Exchange属性传递标签
利用Camel Azure Blob组件内置的AzureBlobConstants.BLOB_TAGS属性传递索引标签,无需修改URI参数:
// 先设置索引标签属性 .setProperty(AzureBlobConstants.BLOB_TAGS, constant("team:dev&stage:prod")) // 执行上传操作 .toD("azure-storage-blob://{{azbs.discinbounddocs.write.account}}/" + "{{azbs.discinbounddocs.write.container}}?blobName=${header." + FtpConstants.FILE_ABSOLUTE_PATH + "}&operation=uploadBlockBlob", 0)
说明
直接传递x-ms-tags请求头无效的原因是:Camel的azure-storage-blob组件封装Azure SDK时,并未将该HTTP头直接映射到Blob索引标签的设置逻辑,而是通过组件自身定义的参数或Exchange属性来处理标签配置。
内容的提问来源于stack exchange,提问作者Earnie Dyke
相关产品推荐
相关产品推荐

