响应式基础设施
反应式 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 WebFlux 或 Vert.x,会订阅发布者并启动实际执行。有关更多详细信息,请参见 Project reactor 文档。
Reactive Composition Libraries
反应式空间提供了各种反应式组合库。最常见的库是 RxJava 和 Project Reactor。
Spring Data for Apache Cassandra 是建立在 DataStax Cassandra Driver 之上的。该驱动程序不是响应式的,但异步功能允许我们采用并公开 Publisher
API,通过依赖 Reactive Streams 倡议提供最大的互操作性。通过使用 Project Reactor 的 Flux
和 Mono
类型,提供了静态 API,例如 ReactiveCassandraOperations
。Project Reactor 提供了各种适配器来转换响应式包装类型(将 Flux
转换为 Observable
并反向转换),但转换可能会轻易使代码变得混乱。