首页 > 解决方案 > MongoDB - MongoClientSettings 属性弃用

问题描述

我在我的 .NET Core 3.1 应用程序中配置了 Mongo 连接字符串中的 MongoDb waitQueueMultiple 和 maxPoolSize。

我想在连接字符串中MongoClientSettings而不是在连接字符串中设置这些参数,但我从 2.12.3 版本的 MongoDb 中读到 waitQueueSize 将被弃用,我不明白替代方案是什么。

你有什么建议吗?

这就是我现在配置代码的方式:

var url = new MongoUrl(_mongoDbConfiguration.ConnectionString);
var settings = MongoClientSettings.FromUrl(url);

settings.MaxConnectionPoolSize = _mongoDbConfiguration.MaxPoolSize;
settings.WaitQueueSize = _mongoDbConfiguration.WaitQueueMultiple;

var client = new MongoClient(settings);
var database = client.GetDatabase(url.DatabaseName);

return database;

谢谢,戴夫。

标签: mongodbmongodb-.net-driver

解决方案


我发现该文档在四处挖掘。

文档来自 PyMongo,但我认为对于 .NET 也可能有用:

  • waitQueueMultiple已被弃用,无需更换。此选项对于设置排队上限是一个糟糕的解决方案,因为它不会影响驱动程序其他部分的排队。

  • 一旦池达到其最大大小,额外的线程必须等待套接字变得可用。PyMongo 不限制可以等待套接字可用的线程数,并且应用程序有责任在负载峰值期间限制其线程池的大小以绑定队列。waitQueueTimeoutMS除非已定义,否则允许线程等待任意时间长度。

根据csharp 驱动程序文档,waitQueueTimeout 的默认值为 2 分钟。

因此,在我的应用程序中,我可以设置MaxConnectionPoolSizeWaitQueueTimeout. 如果未配置,应用程序将采用默认值。


推荐阅读