MongoClient 設定の指定
Overview
このガイドでは、 MongoClient
の動作を制御するためのさまざまな設定について説明します。
次のセクションでは、一般的に使用される設定について説明します。
MongoClient 設定
MongoClient
MongoClientSettings オブジェクトを作成して MongoClients.create() メソッドに渡すことで、 の動作を制御できます。
MongoClientSettings
オブジェクトを作成するには、 MongoClientSettings.builder()
メソッドとチェーン メソッドを使用して設定を指定します。 これらをチェーンした後、 build()
メソッドを使用してMongoClientSettings
オブジェクトを作成します。
次の表では、接続動作を変更するために連鎖させることができる方法について説明しています。
方式 | 説明 |
---|---|
| |
|
|
| 指定された |
|
|
|
|
|
|
|
|
|
|
|
|
| Sets the auto-encryption settings. If you omit keyVaultClient or set
bypassAutomaticEncryption to false in your
AutoEncryptionSettings , the driver creates a separate,
internal MongoClient .The internal MongoClient configuration differs from the
parent MongoClient by setting the minPoolSize to 0 and
omitting the AutoEncryptionSettings . |
| |
| |
| サーバーへのメッセージを圧縮するために使用するコンプレッサーを設定します。 |
| 認証情報を設定します。 |
| 読み取り保証 ( read concern) を設定します。 |
| |
| |
| |
| サーバーにコマンドを送信するときに使用するサーバー APIを設定します。 |
| |
| UUID のインスタンスをエンコードし、サブタイプが 3 の BSON バイナリ値をデコードするときに使用する UUID 表現を設定します。 |
| Sets the write concern. Default: WriteConcern#ACKNOWLEDGED . For more information about
the default value, see Implicit Default Write Concern. |
例
この例えでは、 ConnectionString
を指定する方法を示しています。
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyConnectionString(new ConnectionString("<your connection string>")) .build());
注意
連鎖注文
設定内の一部のオプションは、接続stringオプションにマップされます。 設定 と 接続stringで同じオプションを指定する場合、それらを連結する順序によってドライバーが使用するオプションが決まります。 ドライバーは、読み込んだ最後の設定を使用します。
たとえば、このスニペットには、ドライバーが利用可能なソケットに接続するための次の時間設定が含まれています。
接続stringは 内の を指定します
2 SECONDS
ソケット設定は
5 SECONDS
以内に指定されます
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("mongodb+srv://<db_username>:<db_password>@<hostname>:<port>/<auth db>?connectTimeoutMS=2000")) .applyToSocketSettings(builder -> builder.connectTimeout(5L, SECONDS)) .build());
ドライバーはソケット設定オプションを最後に読み取るため、ドライバーはタイムアウトする前に5 SECONDS
以内に使用可能なソケットに接続することを想定しています。
Tip
設定をログに記録する
MongoClient
インスタンス設定をログに記録するには、 org.mongodb.driver.client
の名前付きロガーをINFO
レベルに設定します。
MongoDB Java ドライバーによるログの記録の詳細については、ログガイド を参照してください。
クラスター設定
applyToClusterSettings() のチェーン メソッドを使用して、MongoDB クラスターを操作するときにドライバーの動作を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 | |||
---|---|---|---|---|
| クラスター関連のイベントのリスナーを追加します。 | |||
|
| |||
|
| |||
| mongo配置のすべての指定された場所を設定します。 | |||
| Sets the amount of time that a server’s round trip can take and still
be eligible for server selection. Default: 15 milliseconds | |||
| MongoDB 配置に接続する方法を設定します。 | |||
| クラスターに必要なクラスターのタイプを設定します。 | |||
| クラスターに必要なレプリカセット名を設定します。 | |||
| Sets the maximum time to select a primary node before throwing a
timeout exception. Default: 30 seconds | |||
| サーバーの選択の前に適用するサーバー セレクターを追加します。 | |||
| Sets the host name to use to look up an SRV DNS record to find the
MongoDB hosts. If you want to enable the processing of TXT records associated with the host,
specify the SRV host in the connection string
using the applyConnectionString() method.For example:
| |||
| Sets the maximum number of hosts the driver can connect to when using
the DNS seedlist (SRV) connection protocol, identified by the
mongodb+srv connection string prefix.Throws an exception if you are not using the SRV connection protocol. |
例
この例では、次の構成要素である MongoDB クラスターのタイプに関係なく、ドライバーがサーバーに直接接続するように指定します。
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.mode(ClusterConnectionMode.SINGLE) .build());
Tip
これは、接続 URI で指定できるdirectConnection
パラメータと同様です。 詳細については、接続オプションを参照してください。
接続プールの設定
applyToConnectionPoolSettings() のチェーン メソッドを使用して、ドライバーが接続プールを管理する方法を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
| 接続プール関連のイベントのリスナーを追加します。 |
|
|
|
|
| メンテナンス ジョブを実行する頻度を設定します。 |
| 最初のメンテナンス ジョブを実行する前に待機する時間を設定します。 |
| 接続が閉じられる前にアイドル状態を維持できる最大時間を設定します。 |
| プールされた接続が閉じられる前に存在できる最大時間を設定します。 |
| Sets the maximum number of connections associated with a connection
pool. Default: 100 |
| Sets the maximum time to wait for an available connection. Default: 2 minutes |
| Sets the minimum number of connections associated with a connection
pool. Default: 0 |
注意
このmaxSize
とminSize
の設定は、ドライバーを接続するクラスター内の各サーバーに適用されます。
たとえば、3 つのmongos
サーバーを持つクラスターにドライバーを接続するとします。 つまり、各mongos
サーバーには最大でmaxSize
接続、少なくともminSize
接続が存在します。
例
この例では、 Connection
型のプールで次のドライバーの動作を指定します。
利用可能な接続を最大で
10 SECONDS
待機するスレッドプールに関連付けられている最大で
200
の接続があること
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToConnectionPoolSettings(builder -> builder.maxWaitTime(10, SECONDS) .maxSize(200) .build());
ロガー設定
applyToLoggerSettings() のチェーン メソッドを使用して、ドライバーのログ動作を変更します。
次の表では、 設定に連鎖させてログ記録の動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
| Sets the maximum document length, in characters, of a single log
message. Default: 1000 |
例
この例では、1 つのログ メッセージの最大文字数を5000
文字に設定することを指定しています。
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToLoggerSettings(builder -> builder.maxDocumentLength(5_000)) .build());
サーバー設定
applyToServerSettings() の メソッドを使用して、各 MongoDB 配置を監視するときにドライバーの動作を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
| サーバー関連のイベントのリスナーを追加します。 |
| サーバー モニター関連のイベントのリスナーを追加します。 |
|
|
|
|
| Sets the interval for a cluster monitor to attempt reaching a server. Default: 10 seconds |
| Sets the minimum interval for server monitoring checks. Default: 500 milliseconds |
例
この例では、MongoDB 配置で次のドライバーの動作を指定します。
サーバー監視チェックの最小間隔は、少なくとも
700 MILLISECONDS
クラスター モニターはサーバーへのアクセスを試行します。
15 SECONDS
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToServerSettings(builder -> builder.minHeartbeatFrequency(700, MILLISECONDS) .heartbeatFrequency(15, SECONDS)) .build());
ソケット設定
applyToSocketSettings() のチェーン メソッドを使用して、MongoDB 配置に接続して通信するときにドライバーの動作を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
|
|
|
|
| Sets the maximum time to connect to an available socket before throwing
a timeout exception. Default: 10 seconds |
| Sets the maximum time to read from an available socket before throwing a
timeout exception. Default: 0 , which indicates no timeout |
| Sets the socket's buffer size when receiving. Default: The operating system default |
| Sets the socket's buffer size when sending. Default: The operating system default |
例
この例では、MongoDB ソケットで次のドライバーの動作を指定します。
内の利用可能なソケットに接続するには
10 SECONDS
内の利用可能なソケットから読み取るには
15 SECONDS
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToSocketSettings(builder -> builder.connectTimeout(10, SECONDS) .readTimeout(15, SECONDS)) .build());
TLS/SSL 設定
applyToSslSettings() のチェーン TLS/SSL を使用してアプリケーションと MongoDB 間の接続を保護するときに、ドライバーの動作を変更するメソッド。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
|
|
|
|
| TLS/SSL を有効にする場合に使用する |
| TLS/SSL を有効にするかどうか。 (Atlas クラスターではこれを有効にする必要があります)。 |
| サーバーのホスト名と TLS 証明書で指定されたホスト名との間で、不一致を許可するかどうか。 |
例
次の例では、MongoDB に接続するときに TLS/SSL を有効にするようにドライバーに指定します。
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToSslSettings(builder -> builder.enabled(true)) .build());