Docs Menu
Docs Home
/ / /
Scala
/

Primer

項目一覧

  • Reactive Streams
  • Observables
  • バックプレッシャー
  • クイック スタートの で使用されるヘルパー

このガイドでは、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

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

注意

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

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

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

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

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

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

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

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

戻る

はじめる