MongoClient 設定の指定
Overview
このガイドでは、 MongoClient
の動作を制御するためのさまざまな設定について説明します。
次のセクションでは、一般的に使用される設定について説明します。
MongoClient 設定
You can control the behavior of your MongoClient
by creating and passing in a MongoClientSettings object to the MongoClients.create() 使用して複数のドキュメントを挿入できます。
MongoClientSettings
オブジェクトを作成するには、 MongoClientSettings.builder()
メソッドとチェーン メソッドを使用して設定を指定します。 これらをチェーンした後、 build()
メソッドを使用してMongoClientSettings
オブジェクトを作成します。
次の表では、接続動作を変更するために連鎖させることができる方法について説明しています。
方式 | 説明 |
---|---|
addCommandListener() | |
applicationName() | MongoClient を使用してアプリケーションの論理名を設定します。 |
applyConnectionString() | 指定された ConnectionString の設定をビルダに適用します。 このメソッドを省略すると、ドライバーはlocalhost への接続を試みます。 |
applyToClusterSettings() | ClusterSettings.Builder ブロックを適用し、クラスター設定を設定します。 |
applyToConnectionPoolSettings() | ConnectionPoolSettings.Builder ブロックを適用し、接続プール設定を設定します。 |
applyToLoggerSettings() | LoggerSettings.Builder ブロックを適用し、ロガー設定を設定します。 |
applyToServerSettings() | ServerSettings.Builder ブロックを適用し、サーバー設定を設定します。 |
applyToSocketSettings() | SocketSettings.Builder ブロックを適用し、ソケット設定を設定します。 |
applyToSslSettings() | SslSettings.Builder ブロックを適用し、 TLS/SSL 設定を設定します。 |
autoEncryptionSettings() | 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 . |
codecRegistry() | |
commandListenerList() | |
compressorList() | サーバーへのメッセージを圧縮するために使用するコンプレッサーを設定します。 |
credential() | 認証情報を設定します。 |
readConcern() | 読み取り保証 ( read concern) を設定します。 |
readPreference() | |
retryReads() | |
retryWrites() | |
serverApi() | サーバーにコマンドを送信するときに使用するサーバー APIを設定します。 |
streamFactoryFactory() | StreamFactory を作成するために使用するファクトリーを設定します。 |
uuidRepresentation() | UUID のインスタンスをエンコードし、サブタイプが 3 の BSON バイナリ値をデコードするときに使用する UUID 表現を設定します。 |
writeConcern() | 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(5, SECONDS)) .build());
ドライバーはソケット設定オプションを最後に読み取るため、ドライバーはタイムアウトする前に5 SECONDS
以内に使用可能なソケットに接続することを想定しています。
Tip
設定をログに記録する
MongoClient
インスタンス設定をログに記録するには、 org.mongodb.driver.client
の名前付きロガーをINFO
レベルに設定します。
MongoDB Java ドライバーによるログの記録の詳細については、ログガイド を参照してください。
クラスター設定
applyToClusterSettings() のチェーン メソッドを使用して、MongoDB クラスターを操作するときにドライバーの動作を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 | |||
---|---|---|---|---|
addClusterListener() | クラスター関連のイベントのリスナーを追加します。 | |||
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 | |||
applySettings() | ClusterSettings オブジェクトで指定されたクラスター設定を使用します。 | |||
hosts() | mongo配置のすべての指定された場所を設定します。 | |||
localThreshold() | Sets the amount of time that a server’s round trip can take and still
be eligible for server selection. Default: 15 milliseconds | |||
mode() | MongoDB 配置に接続する方法を設定します。 | |||
requiredClusterType() | クラスターに必要なクラスターのタイプを設定します。 | |||
requiredReplicaSetName() | クラスターに必要なレプリカセット名を設定します。 | |||
serverSelectionTimeout() | Sets the maximum time to select a primary node before throwing a
timeout exception. Default: 30 seconds | |||
serverSelector() | サーバーの選択の前に適用するサーバー セレクターを追加します。 | |||
srvHost() | SRV DNS レコードを検索して MongoDB ホストを検索するために使用するホスト名を設定します。 注意
TXT レコードの処理を有効にする場合は、
| |||
srvMaxHosts() | 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() のチェーン メソッドを使用して、ドライバーが接続プールを管理する方法を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
addConnectionPoolListener() | 接続プール関連のイベントのリスナーを追加します。 |
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | ConnectionPoolSettings オブジェクトで指定された接続プール設定を使用します。 |
maintenanceFrequency() | メンテナンス ジョブを実行する頻度を設定します。 |
maintenanceInitialDelay() | 最初のメンテナンス ジョブを実行する前に待機する時間を設定します。 |
maxConnectionIdleTime() | 接続が閉じられる前にアイドル状態を維持できる最大時間を設定します。 |
maxConnectionLifeTime() | プールされた接続が閉じられる前に存在できる最大時間を設定します。 |
maxSize() | Sets the maximum number of connections associated with a connection
pool. Default: 100 |
maxWaitTime() | Sets the maximum time to wait for an available connection. Default: 2 minutes |
minSize() | 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() のチェーン メソッドを使用して、ドライバーのログ動作を変更します。
次の表では、 設定に連鎖させてログ記録の動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
maxDocumentLength() | 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 配置を監視するときにドライバーの動作を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
addServerListener() | サーバー関連のイベントのリスナーを追加します。 |
addServerMonitorListener() | サーバー モニター関連のイベントのリスナーを追加します。 |
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | ServerSettings オブジェクトで指定されたサーバー設定を使用します。 |
heartbeatFrequency() | Sets the interval for a cluster monitor to attempt reaching a server. Default: 10 seconds |
minHeartbeatFrequency() | 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 配置に接続して通信するときにドライバーの動作を変更します。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | SocketSettings オブジェクトで指定されたソケット設定を使用します。 |
connectTimeout() | Sets the maximum time to connect to an available socket before throwing
a timeout exception. Default: 10 seconds |
readTimeout() | Sets the maximum time to read from an available socket before throwing a
timeout exception. Default: 0 , which indicates no timeout |
receiveBufferSize() | Sets the socket's buffer size when receiving. Default: The operating system default |
sendBufferSize() | 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 間の接続を保護するときに、ドライバーの動作を変更するメソッド。
次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。
方式 | 説明 |
---|---|
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | SslSettings オブジェクトで指定された TLS/SSL 設定を使用します。 |
context() | TLS/SSL を有効にする場合に使用する SSLContext を設定します。 |
enabled() | TLS/SSL を有効にするかどうか。 (Atlas クラスターではこれを有効にする必要があります)。 |
invalidHostNameAllowed() | サーバーのホスト名と TLS 証明書で指定されたホスト名との間で、不一致を許可するかどうか。 |
例
次の例では、MongoDB に接続するときに TLS/SSL を有効にするようにドライバーに指定します。
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToSslSettings(builder -> builder.enabled(true)) .build());