【问题标题】:MongoDB - MongoClientSettings property deprecationMongoDB - MongoClientSettings 属性弃用
【发布时间】:2021-09-03 20:26:48
【问题描述】:

我在我的 .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;

谢谢, 戴夫。

【问题讨论】:

    标签: mongodb mongodb-.net-driver


    【解决方案1】:

    我发现文档在四处挖掘。

    这个docs 来自 PyMongo,但我认为它也可能对 .NET 有用:

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

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

    根据csharp driver docs,waitQueueTimeout 的默认值为 2 分钟。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2021-07-12
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多