Docs Menu
Docs Home
/ / /
Java Sync Driver
/ /

MongoClient 設定の指定

項目一覧

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

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

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

  • MongoClient 設定

  • クラスター設定

  • ソケット設定

  • 接続プールの設定

  • サーバー設定

  • TLS/SSL 設定

MongoClientMongoClientSettings オブジェクトを作成して MongoClients.create() メソッドに渡すことで、 の動作を制御できます。

MongoClientSettingsオブジェクトを作成するには、 MongoClientSettings.builder()メソッドとチェーン メソッドを使用して設定を指定します。 これらをチェーンした後、 build()メソッドを使用してMongoClientSettingsオブジェクトを作成します。

次の表では、接続動作を変更するために連鎖させることができる方法について説明しています。

方式
説明

addCommandListener()

コマンド イベントのリスナーを追加します。

applicationName()

MongoClientを使用してアプリケーションの論理名を設定します。

applyConnectionString()

指定されたConnectionStringの設定をビルダに適用します。 このメソッドを省略すると、ドライバーはlocalhostへの接続を試みます。

applyToClusterSettings()

applyToConnectionPoolSettings()

applyToLoggerSettings()

applyToServerSettings()

applyToSocketSettings()

applyToSslSettings()

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を設定します。

transportSettings()

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(5L, 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()

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

戻る

接続オプション