你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Java 的 Azure 存储 Blob Batch 客户端库 - 版本 12.20.1
Azure Blob 存储是 Microsoft 提供的适用于云的对象存储解决方案。 Blob 存储最适合存储巨量的非结构化数据。 非结构化数据是不遵循特定数据模型或定义(如文本或二进制数据)的数据。
源代码 | API 参考文档 | REST API 文档 | 产品文档 | 样品
入门
先决条件
添加包
包括 BOM 文件
请将 azure-sdk-bom 包含在项目中,以依赖于库的 GA 版本。 在以下代码段中,将 {bom_version_to_target} 占位符替换为版本号。 若要详细了解 BOM,请参阅 AZURE SDK BOM 自述文件。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在没有版本标记的依赖项部分中包含直接依赖项。
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob-batch</artifactId>
</dependency>
</dependencies>
包括直接依赖项
如果要依赖于 BOM 中不存在的特定版本的库,请将直接依赖项添加到项目中,如下所示。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob-batch</artifactId>
<version>12.20.1</version>
</dependency>
创建存储帐户
若要创建存储帐户,可以使用 Azure 门户 或 Azure CLI。
az storage account create \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--location <location>
关键概念
Blob 存储用于:
- 直接向浏览器提供图像或文档。
- 存储文件以供分布式访问。
- 对视频和音频进行流式处理。
- 向日志文件进行写入。
- 存储用于备份和还原、灾难恢复及存档的数据。
- 存储数据以供本地或 Azure 托管服务执行分析。
示例
以下部分提供了几个代码片段,涵盖了一些最常见的 Azure 存储 Blob 批处理任务,包括:
创建 BlobBatchClient
从 BlobServiceClient 创建 BlobBatchClient。
BlobBatchClient blobBatchClient = new BlobBatchClientBuilder(blobServiceClient).buildClient();
批量删除 Blob
blobBatchClient.deleteBlobs(blobUrls, DeleteSnapshotsOptionType.INCLUDE).forEach(response ->
System.out.printf("Deleting blob with URL %s completed with status code %d%n",
response.getRequest().getUrl(), response.getStatusCode()));
批量设置 AccessTier
blobBatchClient.setBlobsAccessTier(blobUrls, AccessTier.HOT).forEach(response ->
System.out.printf("Setting blob access tier with URL %s completed with status code %d%n",
response.getRequest().getUrl(), response.getStatusCode()));
高级批处理
删除批处理中具有不同先决条件的 Blob。
BlobBatch blobBatch = blobBatchClient.getBlobBatch();
// Delete a blob.
Response<Void> deleteResponse = blobBatch.deleteBlob(blobUrl);
// Delete a specific blob snapshot.
Response<Void> deleteSnapshotResponse =
blobBatch.deleteBlob(blobUrlWithSnapshot, DeleteSnapshotsOptionType.ONLY, null);
// Delete a blob that has a lease.
Response<Void> deleteWithLeaseResponse =
blobBatch.deleteBlob(blobUrlWithLease, DeleteSnapshotsOptionType.INCLUDE, new BlobRequestConditions()
.setLeaseId("leaseId"));
blobBatchClient.submitBatch(blobBatch);
System.out.printf("Deleting blob completed with status code %d%n", deleteResponse.getStatusCode());
System.out.printf("Deleting blob snapshot completed with status code %d%n",
deleteSnapshotResponse.getStatusCode());
System.out.printf("Deleting blob with lease completed with status code %d%n",
deleteWithLeaseResponse.getStatusCode());
对批处理中具有不同先决条件的 Blob 进行设置 AccessTier
。
BlobBatch blobBatch = blobBatchClient.getBlobBatch();
// Set AccessTier on a blob.
Response<Void> setTierResponse = blobBatch.setBlobAccessTier(blobUrl, AccessTier.COOL);
// Set AccessTier on another blob.
Response<Void> setTierResponse2 = blobBatch.setBlobAccessTier(blobUrl2, AccessTier.ARCHIVE);
// Set AccessTier on a blob that has a lease.
Response<Void> setTierWithLeaseResponse = blobBatch.setBlobAccessTier(blobUrlWithLease, AccessTier.HOT,
"leaseId");
blobBatchClient.submitBatch(blobBatch);
System.out.printf("Set AccessTier on blob completed with status code %d%n", setTierResponse.getStatusCode());
System.out.printf("Set AccessTier on blob completed with status code %d%n", setTierResponse2.getStatusCode());
System.out.printf("Set AccessTier on blob with lease completed with status code %d%n",
setTierWithLeaseResponse.getStatusCode());
疑难解答
使用此 Java 客户端库与 Blob 交互时,服务返回的错误对应于为 REST API 请求返回的相同 HTTP 状态代码。 例如,如果尝试检索存储帐户中不存在的容器或 Blob,则会返回错误 404
,指示 Not Found
。
默认的 HTTP 客户端
默认情况下,所有客户端库都使用 Netty HTTP 客户端。 添加上述依赖项会自动将客户端库配置为使用 Netty HTTP 客户端。 HTTP 客户端 Wiki 中详述了如何配置或更改 HTTP 客户端。
默认 SSL 库
默认情况下,所有客户端库均使用 Tomcat 原生 Boring SSL 库来为 SSL 操作启用原生级别性能。 Boring SSL 库是一个 uber jar,其中包含适用于 Linux/macOS/Windows 的原生库。与 JDK 内的默认 SSL 实现相比,它提供更好的性能。 有关详细信息(包括如何减小依赖项大小),请参阅 Wiki 的性能优化部分。
后续步骤
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com 。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答;若有其他任何问题或意见,请联系 opencode@microsoft.com。