Overview
このガイドでは、 Java Reactive Streams ドライバーが接続プールを使用してMongoDBデプロイへの接続を管理する方法と、アプリケーションで接続プール設定を構成する方法について学習できます。
接続プールは、 Java Reactive Streams ドライバーによって維持されるオープンデータベース接続のキャッシュです。アプリケーションがMongoDBへの接続を要求すると、 Java Reactive Streams ドライバーはプールからシームレスに接続を取得し、操作を実行し、再利用するためにプールに接続を返します。
接続プールは、アプリケーションのレイテンシとJava Reactive Streams ドライバーによって新しい接続が作成される回数を削減するのに役立ちます。
接続プールの作成
すべてのMongoClientインスタンスには、MongoDB トポロジー内の各サーバーに対する接続プールが組み込まれています。 接続プールはオンデマンドでソケットを開き、マルチスレッド アプリケーションで同時 MongoDB 操作をサポートします。
maxPoolSize オプションは各接続プールの最大サイズを設定します。デフォルトは 100 です。サーバーへの使用中の接続数が maxPoolSize の値に達した場合、そのサーバーへの次のリクエストは、接続が利用可能になるまで待機します。
各 MongoClientインスタンスは、サーバーの状態を監視するためにMongoDBトポロジー内のサーバーごとにさらに 2 つのソケットを開きます。
接続プールを構成する
接続プールの設定を指定するには、接続文字列を使用するか、MongoClientSettingsオブジェクトを MongoClients.create() メソッドに渡します。
対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。
以下は、接続プールを構成するために使用できる接続文字列設定です。
設定 | 説明 |
|---|---|
| プールが同時に確立できる接続の最大数。 デフォルト: |
| このオプションはすべてのドライバーでサポートされているわけではありません。この値は、アプリケーションの予想されるアイドル期間よりも高く、ファイアウォールまたはプロキシの接続タイムアウトよりは低く設定して、予期しない切断を防ぐために、 デフォルト: |
| プールで開始されている接続の最大数。接続プールで デフォルト: |
| プールで開始されている接続の最小数。 デフォルト: |
| |
| Java Reactive Streams ドライバーが接続を閉じる前にプールされた接続を引き続き使用する最大時間をミリ秒単位で指定します。値が デフォルト: |
これらのパラメーターの詳細については、ConnectionString APIドキュメント を参照してください。
applyToConnectionPoolSettings() メソッドをチェーンして、ドライバーが接続プールを管理する方法を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
|---|---|
| 接続プール関連のイベントのリスナーを追加します。 |
|
|
|
|
| 接続プールリスナーの一覧を設定します。 |
| メンテナンス ジョブを実行する頻度を設定します。 |
| 最初のメンテナンス ジョブを実行する前に待機する時間を設定します。 |
| 接続が閉じられる前にアイドル状態を維持できる最大時間を設定します。 |
| プールされた接続が閉じられる前に存在できる最大時間を設定します。 |
| プールが同時に確立できる接続の最大数を設定します。 |
| 接続プールに関連付けられた最大接続数を設定します。 デフォルト: |
| 接続可能になるまで待機する最大時間を設定します。 デフォルト: |
| 接続プールに関連付けられる接続の最小数を設定します。 デフォルト: |
これらのメソッドの詳細については、ConnectionPoolSettings.Builder APIドキュメント を参照してください。
例
次の例では、最大サイズが 50 接続の接続プールを作成する方法を示しています。
対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。
ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50"); try (MongoClient mongoClient = MongoClients.create(connectionString)) { }
try (MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString( new ConnectionString("<your connection string>")) .applyToConnectionPoolSettings(builder -> builder.maxSize(50)) .build())) {
詳細情報
接続プールの使用の詳細については、サーバー マニュアルの 接続プール に関するドキュメントを参照してください。