Docs Menu
Docs Home
/ /
はじめる

プライマリ: リアクティブストリームとオブジェクト

このガイドでは、Scala ドライバーとその非同期 API の背景を説明してから、 クイック スタート ガイドでドライバーと MongoDB の使用方法を説明します。

注意

ドライバーをインストールする方法については、「インストール 」のガイドを参照してください。

Scala ドライバーは、 MongoDB Java Reactive Streams ドライバー 上に構築されています。 Reactive Stream API は、次のコンポーネントで構成されています。

  1. Observable: パブリッシャー のカスタム実装

  2. Observer: サブスクリプションのカスタム実装

  3. サブスクリプション

Observableは、 ObserverまたはObserverの複数のインスタンスから受け取った要求に応じて公開される、潜在的に無制限の数のシーケンス化された要素のプロバイダーです。

Observable.subscribe(Observer)への呼び出しに応答して、 Observerクラスのメソッドに可能な呼び出しシーケンスは、次のプロトコルによって提供されます。

onSubscribe onNext* (onError | onComplete)?

つまり、 onSubscribe()は常にシグナルられ、その後にObserverからリクエストされた場合、上限の数のonNext()シグナルが続く可能性があります。 これには、障害が発生した場合はonError()シグナルが送信され、 Subscriptionがキャンセルされていない限り、使用できる要素が ない 場合はonComplete()シグナルが送信されます。

Tip

Reactive Streams の詳細については、Reactive Streams のドキュメント を参照してください。

ScalaドライバーAPIは、 Java Sync Driver APIとネットワーク I/O が Observable<T> タイプを返します。ここで示した T は操作の応答タイプです。

注意

ObservableAPIから返されるすべての 型は コールド です。つまり、サブスクライブされるまで何も発生しません。したがって、Observable を作成するだけでは、ネットワーク I/O は発生しません。ドライバーが操作を実行するのは、Subscription.request() メソッドを呼び出すまでです。

この実装ではパウンドは ユニット です。 に対する各SubscriptionObservable 1 つの MongoDB 操作に関連し、Observable Observerインスタンスの には独自の結果セットが与えられます。

デフォルトでは、 Observer特権は、 Observableがサブスクライブされるとすぐに、 Observerからのすべての結果をリクエストします。 ObserverObservableからのすべての結果を処理できることを確認します。 Observer.onSubscribe()メソッドのカスタム実装によりSubscriptionを保存し、 Observerに容量がある場合にのみデータがリクエストされるようにします。

クイック スタートでは、ドライバー ソースGithubリポジトリの ヘルパース.scalaファイルで定義されたカスタム暗黙的なヘルパーを実装しました。これらのヘルパーは結果を検索して出力します。クイック スタートは非同期コードの疑似シナリオですが、データベースの状態を確保するために、次の例を開始する前にある例の結果をブロックします。Helpersオブジェクトは次のメソッドを提供します。

  • results(): Observableが完了するまでブロックし、収集された結果を返します

  • headResult(): Observableの最初の結果が返されるまでブロックします

  • printResults(): Observableが完了するまでブロックされ、各結果を出力します

  • printHeadResult(): Observableの最初の結果が利用可能になるまでブロックし、それを出力します

戻る

はじめる

項目一覧