Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Scala ドライバー
/

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

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

注意

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

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

  1. Observable: a custom implementation of a Publisher

  2. Observer: a custom implementation of a Subscriber

  3. サブスクリプション

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

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

onSubscribe onNext* (onError | onComplete)?

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

Tip

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の最初の結果が利用可能になるまでブロックし、それを出力します

戻る

はじめる

項目一覧