适用于 SQL API 的 Azure Cosmos DB Async Java SDK:发行说明和资源

适用于: SQL API

SQL API Async Java SDK 与 SQL API Java SDK 的区别在于,前者通过支持 Netty 库提供异步操作。 先存在的 SQL API Java SDK 不支持异步操作。

重要

这不是最新的 Azure Cosmos DB Java SDK! 请考虑将 Azure Cosmos DB Java SDK v4 用于项目。 若要升级,请按照迁移到 Azure Cosmos DB Java SDK v4 指南和 Reactor 与 RxJava 指南中的说明进行操作。

重要

2024 年 8 月 31 日,Azure Cosmos DB Async Java SDK v2.x 将停用;此 SDK 和所有使用此 SDK 的应用程序将继续运行;Azure Cosmos DB 将仅停止为此 SDK 提供进一步的维护和支持。 我们建议按照上述说明迁移到 Azure Cosmos DB Java SDK v4。

链接
SDK 下载 Maven
API 文档 Java API 参考文档
参与 SDK GitHub
入门 Async Java SDK 入门
代码示例 GitHub
性能提示 GitHub 自述文件
受支持的最小运行时 JDK 8

2.6.13 - 2021-01-20

  • 修复了问题:对存储过程执行查询计划和 CRUD 操作时发生“请求标头太长”的错误。
  • 修复了启用 openssl 的问题。

2.6.12 - 2021-01-18

  • 修复了“当从网关检索包含无效 json 的响应时,出现过度的区域故障转移”问题。

2.6.11 - 2020-09-15

  • 添加了 http 请求超时上限,以避免针对高延迟请求进行区域故障转移。(#360)

2.6.10 - 2020-08-31

  • 解决了直接 tcp 调用的区域故障转移问题;将在其他可用区域中重试因网络而失败的直接 tcp 调用,但不会将当前区域标记为不可用,随后的 tcp 请求仍将发送到当前区域。(#351)

2.6.9 - 2020-06-15

  • 修复了从继续标记恢复时 order by 结果重复的问题 (#341)

2.6.8 - 2020-05-11

  • 修复了一个问题,该问题导致从继续标记恢复时 order by 结果可能包含重复/缺少的文档 (#332)

2.6.7 - 2020-04-21

  • 修复了直接 TCP 传输客户端中的多个内存泄漏 (#326)

2.6.6 - 2020-03-12

  • 使 DocumentClientException 线程安全 (#323)

2.6.5 - 2020-01-31

  • 修复了尝试恢复跨分区查询时继续标记设置不正确的问题 (#312)
  • 将反序列化移出 Netty 线程 (#315)
  • 修复了禁止时无法重试写入的问题 (#307)

2.6.4 - 2020-01-02

  • 修复了 SDK 在发生网络故障时重试写入的 bug (#301)
  • 添加了对使用系统属性指定默认直接 TCP 选项的支持 (#299)
  • 改进了直接 TCP 传输客户端中的诊断功能 (#287)
  • 将 Netty 版本升级到了 4.1.42.Final,并将 netty-tcnative.version 升级到了 2.0.26.Final,以解决直接 TCP SSL 问题 (#274)

2.6.3 - 2019-10-23

  • 解决了报告错误(重试策略已损坏)的状态代码:
    • RequestRateTooLargeException.getStatusCode 现在会正确返回 TOO_MANY_REQUESTS
    • ServiceUnavailableException.getStatusCode 现在会正确返回 SERVICE_UNAVAILABLE
    • commons 和 direct-impl 中的 DocumentClientExceptionTest 现在会验证是否为所有 DocumentClientException 子类型返回了正确的状态代码。

2.6.2 - 2019-10-05

  • 修复了将 MaxItemCount 设置为 -1 时的查询故障 (#261)。
  • 修复了有关分区拆分的 NPE bug (#267)。
  • 改进了直接模式下的日志记录。

2.6.1 - 2019-09-04

  • 针对查询逻辑的多主数据库区域故障转移修补程序 (#245)
  • jackson-databind 2.9.9.3 更新 (#244)
  • 直接 TCP 修补程序(内存、性能)及指标接口 (#242)

2.6.0 - 2019-08-01

  • 使用新查询计划检索程序检索查询信息 (#111)
  • 偏移量限制查询支持 (#234)

2.5.1 - 2019-07-31

  • 修复 executeStoredProcedureInternal 以使用客户端重试策略 (#210)

2.4.6 - 2019-07-19

  • 内存改进

2.5.0 - 2019-06-25

  • 默认启用 TCP 传输
  • TCP 传输改进
  • 大量测试改进

2.4.5 - 2019-05-06

  • 添加了对 Hash v2 的支持 (#96)
  • 开源直接连接实现 (#94)
  • 添加了对诊断字符串的支持

2.4.4 - 2019-06-25

  • 其他修补程序

2.4.3 - 2019-03-05

  • 修复了关闭客户端时资源泄漏的问题

2.4.2 - 2019-03-01

  • 修复了对跨分区查询的继续标记支持中的 bug

2.4.1 - 2019-02-20

  • 修复了直接模式下的一些 bug。
  • 改进了直接模式下的日志记录。
  • 改进了连接管理。

2.4.0 - 2019-02-08

  • 直接公开上市。
  • 添加了对 QueryMetrics 的支持。
  • 将接受 java.util.Collection(顺序很重要)的 API 更改为接受 java.util.List。 现在 ConnectionPolicy#getPreferredLocations()、JsonSerialization 和 PartitionKey(.) 接受列表。

2.4.0-beta1 - 2019-02-04

  • 添加了对直接 Https 的支持。
  • 将接受 java.util.Collection(顺序很重要)的 API 更改为接受 java.util.List。 现在 ConnectionPolicy#getPreferredLocations()、JsonSerialization 和 PartitionKey(.) 接受列表。
  • 修复了网关模式下文档查询的会话 bug。
  • 升级了依赖项(netty 0.4.20 github #79、RxJava 1.3.8)。

2.3.1 - 2019-01-15

  • 修复了处理大规模查询响应时的问题。
  • 修复了实例化客户端时的资源令牌处理方面的问题 (github #78)。
  • 升级了易受攻击的依赖项 jackson-databind (github #77)。

2.3.0 - 2018-11-29

  • 修复了资源泄漏 bug。
  • 添加了对 MultiPolygon 的支持
  • 在 RequestOptions 中添加了对自定义标头的支持。

2.2.2 - 2018-11-26

  • 修复了打包 bug。

2.2.1 - 2018-11-05

  • 修复了写入重试路径中的 NPE bug。
  • 修复了终结点管理中的 NPE bug。
  • 升级了易受攻击的依赖项 (github #68)。
  • 添加了对 Netty 网络日志记录的支持,以便进行故障排除。

2.2.0 - 2018-10-04

  • 添加了对多区域写入的支持。

2.1.0 - 2018-09-06

  • 添加了对代理的支持。
  • 添加了对资源令牌授权的支持。
  • 修复了处理大分区键时的 bug (github #63)。
  • 改进了文档。
  • SDK 重构为更细粒度的模块。

2.0.1 - 2018-08-16

  • 修复了非英语区域设置的 bug (github #51)。
  • 为冲突资源添加了帮助器方法。

2.0.0 - 2018-06-20

  • 由于性能原因和授权,由 jackson 替换了 org.json 依赖项 (github #29)。
  • 删除了弃用的 OfferV2 类。
  • 向 Offer 类添加了访问器方法以获取吞吐量内容。
  • Document/Resource 中返回 org.json 类型的任何方法均已更改为返回 jackson 对象类型。
  • 扩展了 JsonSerializable 的类的 getObject(.) 方法已更改为返回 jackson ObjectNode 类型。
  • getCollection(.) 方法已更改为返回 ObjectNode 的集合。
  • 使用 org.json.JSONObject arg 删除了 JsonSerializable 子类的构造函数。
  • JsonSerializable.toJson (SerializationFormattingPolicy.Indented) 现在使用两个空格进行缩进。

1.0.2 - 2018-05-18

  • 添加了对唯一索引策略的支持。
  • 在源选项中添加了对限制响应继续标记大小的支持。
  • 在跨分区查询中添加了对分区拆分的支持。
  • 修复了 Json 时间戳序列化中的一个 bug (github #32)。
  • 修复了 Json 枚举序列化中的一个 bug。
  • 修复了管理 2MB 大小文档中的一个 bug (github #33)。
  • 由于 bug (jackson-databind: github #1599),依赖项 com.fasterxml.jackson.core:jackson-databind 升级到了 2.9.5
  • 由于 bug (rxjava-extras: github #30),rxjava-extras 的依赖项升级到了 0.8.0.17。
  • pom 文件中的元数据说明更新为与文档的其余部分内联。
  • 语法改进 (github #41)、(github #40)。

1.0.1 - 2018-04-20

  • 在查询中添加了反压力支持。
  • 在查询中添加了对分区键范围 ID 的支持。
  • 更改为允许在请求标头中使用更大的继续标记 (bugfix github #24)。
  • Netty 依赖项已升级到 4.1.22.Final,以确保 JVM 在主线程完成后关闭。
  • 已更改为避免在读取主资源时传递会话令牌。
  • 添加了更多示例。
  • 添加了更多基准测试方案。
  • 修复了 Java 头文件以便生成正确的 javadoc。

1.0.0 - 2018-02-26

  • 版本 1.0.0 对于在网关模式下使用 Netty 库的非阻止 IO 提供完全的端到端支持。
  • 已删除 azure-documentdb SDK 的依赖项。
  • 项目 ID 在 0.9.0-rc2 中已从 azure-documentdb-rx 更改为 azure-cosmosdb
  • Java 包名称在 0.9.0-rc2 中已从 com.microsoft.azure.documentdb 更改为 com.microsoft.azure.cosmosdb

0.9.0-rc2 - 2018-02-26

  • FeedResponsePage 已重命名为 FeedReponse
  • ConnectionPolicy 配置的一些小修改。 ConnectionPolicy 中的所有时间字段和方法均采用“InMillis”作为后缀,以使时间单位更加精确。
  • 已删除 ConnectionPolicy#setProxy()
  • FeedOptions#pageSize 已重命名为 FeedOptions#maxItemCount
  • 版本 1.0.0 取代了 0.9.x 版本。

0.9.0-rc1

  • azure-documentdb-rx SDK 的第一版。
  • CRUD 文档 API 完全不阻止使用 Netty。 已使用阻止 SDK azure-documentdb 将查询异步 API 实现为包装器。

发布日期和停用日期

Microsoft 至少会在停用 SDK 的 12 个月 之前发出通知,以便顺利转换到更新的/受支持的版本。

新特性、功能和优化仅添加到最新的 SDK 中。 因此建议你始终尽早升级到最新的 SDK 版本。

使用已停用的 SDK 对 Cosmos DB 发出的任何请求都会被服务拒绝。

警告

Async Java SDK for SQL API 的所有 1.x 版本将于 2020 年 8 月 30 日停用 。


版本 发布日期 停用日期
2.6.4 2020 年 1 月 2 日 2024 年 8 月 31 日
2.6.3 2019 年 10 月 23 日 2024 年 8 月 31 日
2.6.2 2019 年 10 月5 日 2024 年 8 月 31 日
2.6.1 2019 年 9 月 4 日 2024 年 8 月 31 日
2.6.0 2019 年 8 月 1 日 2024 年 8 月 31 日
2.5.1 2019 年 7 月 31 日 2024 年 8 月 31 日
2.4.6 2019 年 7 月 19 日 2024 年 8 月 31 日
2.5.0 2019 年 6 月 25 日 2024 年 8 月 31 日
2.4.5 2019 年 5 月 6 日 2024 年 8 月 31 日
2.4.3 2019 年 3 月 5 日 2024 年 8 月 31 日
2.4.2 2019 年 3 月 1 日 2024 年 8 月 31 日
2.4.1 2019 年 2 月 20 日 2024 年 8 月 31 日
2.4.0 2019 年 2 月 8 日 2024 年 8 月 31 日
2.4.0-beta-1 2019 年 2 月 4 日 2024 年 8 月 31 日
2.3.1 2019 年 1 月 15 日 2024 年 8 月 31 日
2.3.0 2018 年 11 月 29 日 2024 年 8 月 31 日
2.2.2 2018 年 11 月 8 日 2024 年 8 月 31 日
2.2.1 2018 年 11 月 2日 2024 年 8 月 31 日
2.2.0 2018 年 9 月 22 日 2024 年 8 月 31 日
2.1.0 2018 年 9 月 5 日 2024 年 8 月 31 日
2.0.1 2018 年 8 月 16 日 2024 年 8 月 31 日
2.0.0 2018 年 6 月 20 日 2024 年 8 月 31 日
1.0.2 2018 年 5 月 18日 2020 年 8 月 30 日
1.0.1 2018 年 4 月 20 日 2020 年 8 月 30 日
1.0.0 2018 年 2 月 27 日 2020 年 8 月 30 日

常见问题解答

如何收到即将停用的 SDK 的通知?

Azure 会在即将停用的 SDK 的支持结束之前提前 12 个月进行通知,以便协助平稳地转换到支持的 SDK。 我们会通过以下通信通道通知你:Azure 门户、Azure 更新以及与分配的服务管理员的直接通信。

在这 12 个月期间,我是否可以使用即将停用的 Azure Cosmos DB SDK 来创作应用程序?

可以,你可以在 12 个月的宽限期内使用即将停用的 Azure Cosmos DB SDK 创作、部署和修改应用程序。 建议在 12 个月的宽限期内根据相应情况迁移到支持的较新版本 Azure Cosmos DB SDK。

停用日期之后,使用不受支持的 Azure Cosmos DB SDK 的应用程序会发生什么情况?

停用日期之后,Azure Cosmos DB 将不再进行 bug 修复、添加新功能或为已停用的 SDK 版本提供支持。 如果不想升级,从已停用的 SDK 版本发送的请求将继续由 Azure Cosmos DB 服务提供服务。

哪些 SDK 版本将包含最新功能和更新?

新功能和更新将仅添加到最新的受支持的主要 SDK 版本的最新次要版本。 建议始终使用最新版本,以充分利用新功能、性能改进和 bug 修补程序。 如果使用的是未停用的旧版本 SDK,则对 Azure Cosmos DB 进行的请求仍然有效,但是你无法访问任何新功能。

如果无法在截止日期之前更新应用程序,该怎么办?

我们建议尽早升级到最新 SDK。 SDK 标记为要停用之后,你将有 12 个月的时间来更新应用程序。 如果无法在停用日期之前更新,从已停用的 SDK 版本发送的请求将继续由 Azure Cosmos DB 提供服务,因此正在运行的应用程序将继续运行。 但 Azure Cosmos DB 将不再进行 bug 修复、添加新功能或为已停用的 SDK 版本提供支持。

如果你有支持计划并需要技术支持,请创建支持工单以联系我们

另请参阅

若要了解有关 Cosmos DB 的详细信息,请参阅 Azure Cosmos DB 服务页。