MongoClient 設定の指定
Overview
このガイドでは、 MongoClient
の動作を制御するためのさまざまな設定について説明します。
次のセクションでは、一般的に使用される設定について説明します。
MongoClient 設定
MongoClient
MongoClientSettings オブジェクトを作成して MongoClient.create() メソッドに渡すことで、 の動作を制御できます。
MongoClientSettings
オブジェクトを作成するには、 MongoClientSettings.builder()
メソッドとチェーン メソッドを使用して設定を指定します。 これらをチェーンした後、 build()
メソッドを使用してMongoClientSettings
オブジェクトを作成します。
次の表では、接続動作を変更するために連鎖できるすべての方法について説明しています。
方式 | 説明 |
---|---|
addCommandListener() | |
applicationName() | MongoClient を使用してアプリケーションの論理名を設定します。 |
applyConnectionString() | 指定された ConnectionString の設定をビルダに適用します。 このメソッドを省略すると、ドライバーはlocalhost への接続を試みます。 |
applyToClusterSettings() | ClusterSettings.Builder ブロックを適用し、クラスター設定を設定します。 |
applyToConnectionPoolSettings() | ConnectionPoolSettings.Builder ブロックを適用し、接続プール設定を設定します。 |
applyToServerSettings() | ServerSettings.Builder ブロックを適用し、サーバー設定を設定します。 |
applyToSocketSettings() | SocketSettings.Builder ブロックを適用し、ソケット設定を設定します。 |
applyToSslSettings() | SslSettings.Builder ブロックを適用し、 TLS/SSL 設定を設定します。 |
autoEncryptionSettings() | |
codecRegistry() | コーデック レジストリを設定します。 コーデック レジストリを設定します。 |
commandListenerList() | |
compressorList() | サーバーへのメッセージを圧縮するために使用するコンプレッサーを設定します。 |
credential() | 認証情報を設定します。 |
readConcern() | 読み取り保証 ( read concern) を設定します。 |
readPreference() | 読み込み設定 ( read preference) を設定します。 |
retryReads() | ネットワークエラーが発生した場合にドライバーは読み取りを再試行する必要があるかどうか。 |
retryWrites() | ネットワークエラーが発生した場合にドライバーは書き込みを再試行する必要があるかどうか。 |
serverApi() | サーバーにコマンドを送信するときに使用するサーバー APIを設定します。 |
streamFactoryFactory() | StreamFactory を作成するために使用するファクトリーを設定します。 |
uuidRepresentation() | UUID のインスタンスをエンコードし、サブタイプが 3 の BSON バイナリ値をデコードするときに使用する UUID 表現を設定します。 |
writeConcern() | 書込み保証 ( write concern) を設定します。 |
例
この例えでは、 ConnectionString
を指定する方法を示しています。
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("<your connection string>")) .build() )
Tip
各設定にはapplyConnectionString()
メソッドがあります。 設定内ではほとんど必要になることがないため、前述の例に示すように、このメソッドを使用する必要があります。
注意
連鎖注文
設定内の一部のオプションは、接続stringオプションにマップされます。 設定 と 接続stringで同じオプションを指定する場合、それらを連結する順序によってドライバーが使用するオプションが決まります。 ドライバーは、読み込んだ最後の設定を使用します。
たとえば、このスニペットには、ドライバーが利用可能なソケットに接続するための次の時間設定が含まれています。
接続stringは 内の を指定します
2 SECONDS
ソケット設定は
5 SECONDS
以内に指定されます
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("mongodb+srv:/<db_username>:<db_password>@<hostname>:<port>?connectTimeoutMS(2000)")) .applyToSocketSettings{ builder -> builder.connectTimeout(5, TimeUnit.SECONDS) } .build() )
ドライバーはソケット設定オプションを最後に読み取るため、ドライバーはタイムアウトする前に5 SECONDS
以内に使用可能なソケットに接続することを想定しています。
Tip
設定をログに記録する
MongoClient
インスタンス設定をログに記録するには、 org.mongodb.driver.client
の名前付きロガーをINFO
レベルに設定します。
MongoDB Kotlin ドライバーによるログの記録の詳細については、ログガイド を参照してください。
クラスター設定
applyToClusterSettings() のチェーン メソッドを使用して、MongoDB クラスターを操作するときにドライバーの動作を変更します。
次の表では、 設定に連結してドライバーの動作を変更できるすべての方法について説明しています。
方式 | 説明 | |||||
---|---|---|---|---|---|---|
addClusterListener() | クラスター関連のイベントのリスナーを追加します。 | |||||
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 | |||||
applySettings() | ClusterSettings オブジェクトで指定されたクラスター設定を使用します。 | |||||
hosts() | mongoサーバーの指定された場所をすべて設定します。 | |||||
localThreshold() | サーバーのラウンドトリップにかかる時間を設定し、かつサーバー選択の対象となる時間を設定します。 | |||||
mode() | MongoDB サーバーに接続する方法を設定します。 | |||||
requiredClusterType() | クラスターに必要なクラスターのタイプを設定します。 | |||||
requiredReplicaSetName() | クラスターに必要なレプリカセット名を設定します。 | |||||
serverSelectionTimeout() | タイムアウト例外をスローする前に、プライマリ ノードを選択する最大時間を設定します。 | |||||
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 クラスターのタイプに関係なく、ドライバーがサーバーに直接接続するように指定します。
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings{ builder -> builder.mode(ClusterConnectionMode.SINGLE) } .build() )
Tip
これは、接続 URI で指定できるdirectConnection
パラメータと同様です。 詳細については、接続オプションを参照してください。
ソケット設定
applyToSocketSettings() のチェーン メソッドを使用して、MongoDB サーバーに接続して通信するときにドライバーの動作を変更します。
次の表では、 設定に連結してドライバーの動作を変更できるすべての方法について説明しています。
方式 | 説明 |
---|---|
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | SocketSettings オブジェクトで指定されたソケット設定を使用します。 |
applyToProxySettings() | ProxySettings.Builder ブロックを適用し、 proxySettings フィールドを設定します。 |
connectTimeout() | タイムアウト例外をスローする前に、利用可能なソケットに接続する最大時間を設定します。 |
readTimeout() | タイムアウト例外をスローする前に、利用可能なソケットに読み取る最大時間を設定します。 |
receiveBufferSize() | 受信時にソケットのバッファ サイズを設定します。 |
sendBufferSize() | 送信時にソケットのバッファ サイズを設定します。 |
例
この例では、MongoDB ソケットで次のドライバーの動作を指定します。
内の利用可能なソケットに接続するには
10 SECONDS
内の利用可能なソケットから読み取るには
15 SECONDS
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("<your connection string>")) .applyToSocketSettings{ builder -> builder .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) } .build() )
接続プールの設定
applyToConnectionPoolSettings() のチェーン メソッドを使用して、ドライバーが接続プールを管理する方法を変更します。
次の表では、 設定に連結してドライバーの動作を変更できるすべての方法について説明しています。
方式 | 説明 |
---|---|
addConnectionPoolListener() | 接続プール関連のイベントのリスナーを追加します。 |
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | ConnectionPoolSettings オブジェクトで指定された接続プール設定を使用します。 |
maintenanceFrequency() | メンテナンス ジョブを実行する頻度を設定します。 |
maintenanceInitialDelay() | 最初のメンテナンス ジョブを実行する前に待機する時間を設定します。 |
maxConnectionIdleTime() | 接続が閉じられる前にアイドル状態を維持できる最大時間を設定します。 |
maxConnectionLifeTime() | プールされた接続が閉じられる前に存在できる最大時間を設定します。 |
maxWaitTime() | 接続可能になるまで待機する最大時間を設定します。 |
maxSize() | 接続プールに関連付けられた最大接続数を設定します。 |
minSize() | 接続プールに関連付けられる接続の最小量を設定します。 |
注意
このmaxSize
とminSize
の設定は、ドライバーを接続するクラスター内の各サーバーに適用されます。
たとえば、3 つのmongos
サーバーを持つクラスターにドライバーを接続するとします。 つまり、各mongos
サーバーには最大でmaxSize
接続、少なくともminSize
接続が存在します。
例
この例では、 Connection
型のプールで次のドライバーの動作を指定します。
利用可能な接続を最大で
10 SECONDS
待機するスレッドプールに関連付けられている最大で
200
の接続があること
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("<your connection string>")) .applyToConnectionPoolSettings{ builder -> builder .maxWaitTime(10, TimeUnit.SECONDS) .maxSize(200) } .build() )
サーバー設定
applyToServerSettings() の メソッドを使用して、各 MongoDB サーバーを監視するときにドライバーの動作を変更します。
次の表では、 設定に連結してドライバーの動作を変更できるすべての方法について説明しています。
方式 | 説明 |
---|---|
addServerListener() | サーバー関連のイベントのリスナーを追加します。 |
addServerMonitorListener() | サーバー モニター関連のイベントのリスナーを追加します。 |
applyConnectionString() | ConnectionString オブジェクトの設定を使用します。 |
applySettings() | ServerSettings オブジェクトで指定されたサーバー設定を使用します。 |
heartbeatFrequency() | クラスター モニターがサーバーへの到達を試行する間隔を設定します。 |
minHeartbeatFrequency() | サーバー監視チェックの最小間隔を設定します。 |
serverMonitoringMode() | ドライバーが使用するサーバー監視プロトコルを指定します。 |
例
この例では、MongoDB サーバーで次のドライバーの動作を指定します。
サーバー監視チェックの最小間隔は、少なくとも
700 MILLISECONDS
クラスター モニターはサーバーへのアクセスを試行します。
15 SECONDS
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("<your connection string>")) .applyToServerSettings{ builder -> builder .minHeartbeatFrequency(700, TimeUnit.MILLISECONDS) .heartbeatFrequency(15, TimeUnit.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 を有効にするようにドライバーに指定します。
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("<your connection string>")) .applyToSslSettings{ builder -> builder.enabled(true) } .build() )