Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以创建两个连接到同一副本集的C#MongoClient实例吗?_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

可以创建两个连接到同一副本集的C#MongoClient实例吗?

可以创建两个连接到同一副本集的C#MongoClient实例吗?,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我曾经从官方驱动程序创建一个MongoClient的实例,并将其作为单例在DI中注册。但是现在由于设计问题,我必须在另一个地方创建另一个MongoClient实例来连接到同一个副本集 有什么潜在的问题吗?这两个实例将使用相同的连接还是创建两个单独的连接 项目是用ASP.NET Core 3.1编写的 MongoDB驱动程序版本2.8 MongoDB服务器目前使用4.2,如果所有客户端选项都相同,它将工作,因为底层mongo客户端的数据存储在集群级别。正如上面的评论中提到的,mongoClient

我曾经从官方驱动程序创建一个
MongoClient
的实例,并将其作为单例在DI中注册。但是现在由于设计问题,我必须在另一个地方创建另一个MongoClient实例来连接到同一个副本集

有什么潜在的问题吗?这两个实例将使用相同的连接还是创建两个单独的连接

项目是用ASP.NET Core 3.1编写的
MongoDB驱动程序版本2.8

MongoDB服务器目前使用4.2,如果所有客户端选项都相同,它将工作,因为底层mongo客户端的数据存储在集群级别。正如上面的评论中提到的,mongoClient构造函数在每次创建新客户机时都会尝试从静态存储中检索此数据

但是,有一个限制,您的MongoClient设置不应包含已配置的ClusterConfigurator选项。否则,它将导致创建两个不同的集群,其中包含所有相关内容,例如连接池


另外,请参见此处的
Re use
部分:

我无法验证这一点,但我已经了解到,如果多个
MongoClient
s使用完全相同的设置,则c#驱动程序将使用相同的连接池。如果需要验证,您必须查看github上的驱动程序源代码,或者只查看mongodb日志。它应该显示每个客户端打开的连接数。正如我在
MongoClient
中看到的,它确保使用相同的集群,因此我认为应该是安全的。它使用相同的集群,或者根据需要创建一个,正如前面提到的@ViacheslavShchupak。