如何在 MongoClientSettings 中设置每个主机的连接设置?

alp*_*per 7 java mongodb reactive

阻止 MongoDB 驱动程序具有MongoClientOptions,其中包含客户端设置。
反应式驱动程序MongoClients.create()期望MongoClientSettings作为参数。
大多数设置MongoClientOptionsMongoClientSettings.

connectionsPerHost但我在 中找不到替代方案MongoClientSettings
我错过了什么吗?

小智 9

我相信,作为新 MongoDB 驱动程序设计的一部分,connectionsPerHost 参数已更改为 ConnectionPoolSettings.maxSize。请对此持保留态度,因为我尚未测试它是否是完全等效的选项。

对于Async驱动的描述threadsAllowedToBlockForConnectionMultiplier如下,来自MongoDB文档MongoClientSettings.getConnectionPoolSettings ():

获取设置对象中连接提供程序的设置。此设置对象包装了 minConnectionPoolSize、maxConnectionPoolSize、maxWaitTime、maxConnectionIdleTime 和 maxConnectionLifeTime 的值,并使用 maxConnectionPoolSize 和threadsAllowedToBlockForConnectionMultiplier 来计算 maxWaitQueueSize。

可以在ConnectionPoolSettings.applyConnectionString ()中观察到此行为:

maxWaitQueueSize(threadsAllowedToBlockForConnectionMultiplier * maxSize);
Run Code Online (Sandbox Code Playgroud)

与原始MongoClientOptions.getThreadsAllowedToBlockForConnectionMultiplier ()的描述相比,此行为似乎相似:

该乘数与connectionsPerHost 设置相乘,得出可能正在等待池中可用连接的最大线程数。所有其他线程将立即收到异常。例如,如果connectionsPerHost 为10,threadsAllowedToBlockForConnectionMultiplier 为5,则最多可以有50 个线程等待连接。