适用于 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 指南中的说明进行操作。

链接
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 实现为包装器。

发布日期和停用日期

Azure 会在停用 SDK 时至少提前 12 个月发出通知,以便用户顺利转换为更高版本/受支持版本。

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

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

警告

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


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

常见问题解答

1.如何向客户通知即将停用的 SDK?

Azure 会在即将停用的 SDK 的支持结束之前提前 12 个月进行通知,以便协助平稳地转换到支持的 SDK。 此外,会通过各种通信渠道(Azure 管理门户、开发人员中心、博客文章以及与分配的服务管理员的直接通信)来通知客户。

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

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

3.在 12 个月通知期之后,客户是否可以使用已停用的 Azure Cosmos DB SDK 创建和修改应用程序?

在 12 个月通知期之后,SDK 会停用。 Azure Cosmos DB 平台不允许使用已停用 SDK 的应用程序对 Azure Cosmos DB 进行任何访问。 此外,Azure 不会对已停用的 SDK 提供客户支持。

4.如果客户运行使用不支持的 Azure Cosmos DB SDK 版本的应用程序,会发生什么情况?

任何使用已停用 SDK 版本连接 Azure Cosmos DB 服务的尝试都会被拒绝。

5.新特性和功能是否会适用于所有未停用的 SDK?

新特性和功能只添加到新版本。 如果使用的是未停用的旧版本 SDK,则对 Azure Cosmos DB 进行的请求仍会与以前一样正常工作,但是你无法访问任何新功能。

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

我们建议尽早升级到最新 SDK。 SDK 标记为要停用之后,会有 12 个月来更新应用程序。 如果由于任何原因而无法在此时间范围内完成应用程序更新,请在截止日期之前与 Cosmos DB 团队联系并请求其帮助。

另请参阅

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