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

时间:2019-06-07 15:57:35

标签: java mongodb reactive

阻止MongoDB驱动程序具有MongoClientOptions,其中包含客户端设置。
反应性驱动程序的MongoClients.create()期望将MongoClientSettings作为参数。
MongoClientOptions中的大多数设置在MongoClientSettings中具有相同的功能。

但是我在connectionsPerHost中找不到MongoClientSettings的替代项。
我想念什么吗?

1 个答案:

答案 0 :(得分:2)

我认为,作为新MongoDB驱动程序设计的一部分,connectionsPerHost参数已更改为ConnectionPoolSettings.maxSize。请带一点盐,因为我还没有测试过它是否是完全等效的选择。

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

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

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

maxWaitQueueSize(threadsAllowedToBlockForConnectionMultiplier * maxSize);

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

此乘数乘以connectionsPerHost设置,得出可以等待池中的连接可用的最大线程数。所有其他线程将立即获得异常。例如,如果connectionsPerHost为10,而threadsAllowedToBlockForConnectionMultiplier为5,则最多可以有50个线程等待连接。