Docs Menu
Docs Home
/ / /
Java 同期
/ /

MongoClient 設定の指定

項目一覧

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

このガイドでは、 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()

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()
readPreference()
Sets the read preference.

Default: primary
retryReads()
Whether the driver performs retry reads if a network error occurs.

Default: true
retryWrites()
Whether the driver performs retry writes if a network error occurs.

Default: true
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 ホストを検索するために使用するホスト名を設定します。

注意

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

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

MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("mongodb+srv://host1.acme.com")))
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

注意

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

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

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

戻る

接続オプション