Overview
このガイドでは、Scalaドライバーが接続プールを使用してMongoDBデプロイの接続を管理する方法と、アプリケーションで接続プール設定を構成する方法について学ぶことができます。
接続プールは、Scala ドライバーによって維持されるオープンデータベース接続のキャッシュです。アプリケーションはプールから接続を検索し、操作を実行し、接続を再利用のために返します。
接続プールを使用すると、レイテンシの低減とドライバーが新しい接続を作成する回数の最小化につながります。
接続プールの作成
すべての MongoClient インスタンスには、MongoDB トポロジーの各サーバーに対する組み込み接続プールがあります。接続プールはオンデマンドでソケットを開き、アプリケーションでの同時 MongoDB 操作をサポートします。
maxPoolSize オプションは各接続プールの最大サイズを設定します。デフォルトは100になります。サーバーへの使用中の接続数がmaxPoolSizeの値に達した場合、そのサーバーへの次のリクエストは接続が利用可能になるまで待機します。
各 MongoClientインスタンスは、サーバーの状態を監視するためにMongoDBトポロジー内のサーバーごとにさらに 2 つのソケットを開きます。
接続プールを構成する
接続文字列または MongoClientSettings オブジェクトのいずれかを使用して接続プールを構成できます。
対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。
次の表は、接続プールを構成するための接続文字列オプションについて説明します。
オプション | 説明 |
|---|---|
| ドライバーが同時に確立できる最大接続数。 デフォルト: |
| ドライバーが接続を閉じるまで、接続がプール内でアイドル状態でいられる最大ミリ秒数。 デフォルト: |
| ドライバーが単一の接続プールで一度に開くことができる接続の最大数。 デフォルト: |
| ドライバーが単一の接続プールで維持する接続の最小数。この値は デフォルト: |
| このオプションは非推奨です。代わりに 接続が利用可能になるまで操作が待機できる最大待機時間(ミリ秒)。値が デフォルト: |
| 接続を開いておくことができる最大ミリ秒数。 デフォルト: |
詳細については、ConnectionString API ドキュメントを参照してください。
MongoClientSettings.Builder クラスに applyToConnectionPoolSettings() メソッドをチェーンして接続プールを構成します。次の表には、プールを構成するためにチェーンできる ConnectionPoolSettings.Builder メソッドについて説明します。
方式 | 説明 |
|---|---|
| 接続プール イベントのリスナーを追加します。 |
|
|
|
|
| 接続プールリスナーのリストを設定します。 |
| アイドルな接続と期限切れの接続をマネージドする定期ジョブの頻度を設定します。 |
| 接続プールで最初のメンテナンスジョブを実行する前に待機する期間を設定します。 |
| プールされた接続の最大アイドル時間を設定します。 |
| プールされた接続の最大宿命を設定します。 |
| プールが同時に確立できる接続の最大数を設定します。 デフォルト: |
| プールで許可される接続の最大数を設定します。 デフォルト: |
| 接続可能になるまで待機する最大時間を設定します。 デフォルト: |
| ドライバーがプール内で維持する接続の最小数を設定します。 デフォルト: |
注意
maxSize() と minSize() の設定は、プール全体ではなく、配置された各サーバーに個別に適用されます。
詳細については、ConnectionPoolSettings.ビルダ API ドキュメントを参照してください。
例
次の例では、最大サイズが 50 接続の接続プールを作成する方法を示します。
対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。
val mongoClient = MongoClient("mongodb://<host>:<port>/?maxPoolSize=50")
val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString("<connection string>")) .applyToConnectionPoolSettings( (builder: ConnectionPoolSettings.Builder) => builder.maxSize(50)) .build() val mongoClientWithSettings = MongoClient(settings)
詳細情報
接続プールの使用の詳細については、サーバー マニュアルの 接続プール に関するドキュメントを参照してください。
API ドキュメント
このガイドで説明したタイプとメソッドの詳細については、次の API ドキュメントを参照してください。