跳到主要内容
版本:5.1.1

响应式基础设施

Doubao 中英对照 Reactive Infrastructure

响应式 Cassandra 支持涵盖广泛的特性:

  • 使用基于 Java 的 @Configuration 类提供 Spring 配置支持。

  • ReactiveCqlTemplate 辅助类,通过妥善处理常见的 Cassandra 数据访问操作来提高开发效率。

  • ReactiveCassandraTemplate 辅助类,通过以响应式方式使用 ReactiveCassandraOperations 来提高开发效率。它内置了表与 POJO 之间的对象映射。

  • 将异常转换为 Spring 可移植的数据访问异常层次结构。

  • 功能丰富的对象映射,与 Spring 的转换服务集成。

  • 基于 Java 的 Query、Criteria 和 Update DSL。

  • 自动实现 Repository 接口,包括对自定义查找方法的支持。

对于大多数面向数据的任务,您可以使用 ReactiveCassandraTemplate 或仓库支持,二者都使用丰富的对象映射功能。ReactiveCqlTemplate 通常用于递增计数器或执行临时的 CRUD 操作。ReactiveCqlTemplate 还提供回调方法,方便您获取底层 API 对象,例如 com.datastax.oss.driver.api.core.CqlSession,从而直接与 Cassandra 通信。Spring Data for Apache Cassandra 在各种 API 上对对象采用与 DataStax Java Driver 一致的命名约定,使它们一目了然,便于您将已有知识迁移到 Spring API 上。

响应式用法分为两个阶段:组合(Composition)和执行(Execution)。

调用仓库方法时,您可以通过获取 Publisher 实例并应用操作符来组合一个响应式序列。在订阅之前不会发生任何 I/O。将该响应式序列传递给响应式执行基础设施(如 Spring WebFlux 或 Vert.x)时,会订阅该发布器并启动实际执行。更多细节请参阅 Project Reactor 文档。

响应式组合库​

响应式领域提供了各种响应式组合库。最常见的库是 RxJava 和 Project Reactor。

Spring Data for Apache Cassandra 构建在 DataStax Cassandra Driver 之上。该驱动本身不是响应式的,但其异步能力使我们能够采用并暴露 Publisher API,依靠 Reactive Streams 规范提供最大的互操作性。静态 API(如 ReactiveCassandraOperations)通过使用 Project Reactor 的 Flux 和 Mono 类型来提供。Project Reactor 提供了各种适配器来转换响应式包装类型(在 Flux 与 Observable 之间相互转换),但这种转换很容易让代码变得杂乱。