このガイドでは、Scala ドライバーとその非同期 API の背景を説明してから、 クイック スタート ガイドでドライバーと MongoDB の使用方法を説明します。
注意
ドライバーをインストールする方法については、「インストール 」のガイドを参照してください。
Reactive Streams
Scala ドライバーは、 MongoDB Java Reactive Streams ドライバー 上に構築されています。 Reactive Stream API は、次のコンポーネントで構成されています。
Observable
: a custom implementation of a PublisherObserver
: a custom implementation of a Subscriber
Observable
は、 Observer
またはObserver
の複数のインスタンスから受け取った要求に応じて公開される、潜在的に無制限の数のシーケンス化された要素のプロバイダーです。
Observable.subscribe(Observer)
への呼び出しに応答して、 Observer
クラスのメソッドに可能な呼び出しシーケンスは、次のプロトコルによって提供されます。
onSubscribe onNext* (onError | onComplete)?
つまり、 onSubscribe()
は常にシグナルられ、その後にObserver
からリクエストされた場合、上限の数のonNext()
シグナルが続く可能性があります。 これには、障害が発生した場合はonError()
シグナルが送信され、 Subscription
がキャンセルされていない限り、使用できる要素が ない 場合はonComplete()
シグナルが送信されます。
Observables
ScalaドライバーAPIは、 Java Sync Driver APIとネットワーク I/O が Observable<T>
タイプを返します。ここで示した T
は操作の応答タイプです。
注意
バックプレッシャー
デフォルトでは、 Observer
特権は、 Observable
がサブスクライブされるとすぐに、 Observer
からのすべての結果をリクエストします。 Observer
がObservable
からのすべての結果を処理できることを確認します。 Observer.onSubscribe()
メソッドのカスタム実装によりSubscription
を保存し、 Observer
に容量がある場合にのみデータがリクエストされるようにします。
クイック スタートの で使用されるヘルパー
クイック スタートでは、ドライバー ソース GitHubリポジトリの ヘルパース.scalaファイルで定義されたカスタム暗黙的なヘルパーを実装しました。これらのヘルパーは結果を検索して出力します。クイック スタートは非同期コードの疑似シナリオですが、データベースの状態を確保するために、次の例を開始する前にある例の結果をブロックします。Helpers
オブジェクトは次のメソッドを提供します。
results()
:Observable
が完了するまでブロックし、収集された結果を返しますheadResult()
:Observable
の最初の結果が返されるまでブロックしますprintResults()
:Observable
が完了するまでブロックされ、各結果を出力しますprintHeadResult()
:Observable
の最初の結果が利用可能になるまでブロックし、それを出力します