入门指南
本指南提供了有关Scala驾驶员及其异步API的背景知识,然后向您展示如何使用快速入门指南中的驾驶员和MongoDB 。
注意
有关如何安装驱动程序的说明,请参阅安装指南。
反应流
Scala驾驶员基于 MongoDB Java Reactive Streams驾驶员程序构建。 响应流API由以下组件组成:
Observer
: 订阅服务器 的自定义实施
Observable
是数量可能无限的有序元素的提供商,根据从其Observer
或Observer
的多个实例收到的需求进行发布。
为响应对Observable.subscribe(Observer)
的调用, Observer
类上的方法的可能调用序列由以下协议给出:
onSubscribe onNext* (onError | onComplete)?
这意味着onSubscribe()
始终会发出信号,然后按照Observer
的请求,可能有无限数量的onNext()
信号。 只要Subscription
未取消,如果出现故障,则后跟一个onError()
信号,或者当没有更多元素可用时,后跟一个onComplete()
信号。
提示
要了解有关响应式流的更多信息,请访问响应 式流文档。
Observables
Scala 驱动程序 API 镜像Java Sync 驱动程序API 以及导致网络 I/O 返回Observable<T>
类型的任何方法,其中T
是操作的响应类型。
注意
Observable
从API返回的所有 类型都是 冷 类型 ,这意味着在订阅之前什么都不会发生。因此,仅创建Observable
不会导致任何网络 I/O。 直到您调用Subscription.request()
方法,驾驶员才会执行操作。
此实施中的发布者是单播的。 Observable
的每个Subscription
都与单个MongoDB操作相关,并且Observable
实例的Observer
会接收自己的特定结果设立。
背压
默认,订阅Observable
后, Observer
特征将立即从Observer
请求所有结果。 确保Observer
可以处理来自Observable
的所有结果。 Observer.onSubscribe()
方法的自定义实现可以保存Subscription
,以便仅在Observer
具有容量时才请求数据。
快速入门中使用的助手
在快速入门中,我们实现了定义在 Helpers.scala 驾驶员源Github 存储库中的文件。这些助手检索并打印结果。 尽管快速入门是异步代码的人为场景,但这些示例会在开始下一个示例之前区块一个示例的结果,以确保数据库的状态。 Helpers
对象提供以下方法:
results()
:阻塞,直到Observable
完成并返回收集的结果headResult()
:阻塞,直到可以返回Observable
的第一个结果printResults()
:阻塞直到Observable
完成,并打印每个结果printHeadResult()
:阻塞,直到Observable
的第一个结果可用,然后打印