跳到主要内容

响应式基础设施

ChatGPT-4o-mini 中英对照 Reactive Infrastructure

反应式 Cassandra 支持包含了广泛的功能:

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

  • ReactiveCqlTemplate 辅助类,通过正确处理常见的 Cassandra 数据访问操作来提高生产力。

  • ReactiveCassandraTemplate 辅助类,通过以反应式方式使用 ReactiveCassandraOperations 来提高生产力。它包括表与 POJO 之间的集成对象映射。

  • 异常翻译为 Spring 的可移植 数据访问异常层次结构

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

  • 基于 Java 的查询、标准和更新 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 中。

Reactive 使用分为两个阶段:组合和执行。

调用仓库方法可以通过获取 Publisher 实例并应用操作符来组合反应式序列。在你订阅之前,不会发生任何 I/O。将反应式序列传递给反应式执行基础设施,例如 Spring WebFluxVert.x,会订阅发布者并启动实际执行。有关更多详细信息,请参见 Project reactor 文档

Reactive Composition Libraries

反应式空间提供了各种反应式组合库。最常见的库是 RxJavaProject Reactor

Spring Data for Apache Cassandra 是建立在 DataStax Cassandra Driver 之上的。该驱动程序不是响应式的,但异步功能允许我们采用并公开 Publisher API,通过依赖 Reactive Streams 倡议提供最大的互操作性。通过使用 Project Reactor 的 FluxMono 类型,提供了静态 API,例如 ReactiveCassandraOperations。Project Reactor 提供了各种适配器来转换响应式包装类型(将 Flux 转换为 Observable 并反向转换),但转换可能会轻易使代码变得混乱。