Docs Menu
Docs Home
/ / /
Kotlin コルーチン
/ /

MongoClient 設定の指定

項目一覧

  • Overview
  • MongoClient 設定
  • クラスター設定
  • ソケット設定
  • 接続プールの設定
  • サーバー設定
  • TLS/SSL 設定

このガイドでは、 MongoClientの動作を制御するためのさまざまな設定について説明します。

次のセクションでは、一般的に使用される設定について説明します。

  • MongoClient 設定

  • クラスター設定

  • ソケット設定

  • 接続プールの設定

  • サーバー設定

  • TLS/SSL 設定

MongoClientMongoClientSettings オブジェクトを作成して 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()
readPreference()
retryReads()
ネットワークエラーが発生した場合にドライバーは読み取りを再試行する必要があるかどうか。
retryWrites()
ネットワークエラーが発生した場合にドライバーは書き込みを再試行する必要があるかどうか。
serverApi()
サーバーにコマンドを送信するときに使用するサーバー APIを設定します。
streamFactoryFactory()
StreamFactoryを作成するために使用するファクトリーを設定します。
uuidRepresentation()
UUID のインスタンスをエンコードし、サブタイプが 3 の BSON バイナリ値をデコードするときに使用する UUID 表現を設定します。
writeConcern()

この例えでは、 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 ホストを検索するために使用するホスト名を設定します。

srvHostを設定すると、ドライバーはホストに関連付けられている TXT レコードを処理しません。

TXT レコードの処理を有効にする場合は、applyConnectionString() メソッドを使用して接続stringで SRV ホストを指定する必要があります。

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("mongodb+srv://host1.acme.com"))
.build()
)
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()
接続プールに関連付けられる接続の最小量を設定します。

注意

このmaxSizeminSizeの設定は、ドライバーを接続するクラスター内の各サーバーに適用されます。

たとえば、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()
)

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()
)

戻る

接続オプション