Java 有没有办法在应用程序启动时使用MongoClient创建一组到mongodb的X连接?
我希望在应用程序启动时(即在应用程序开始传输流量之前)创建到mongodb的“X”个连接 MongoDB版本:4.0.11 Mongo Java驱动程序版本(maven):3.4.1 我尝试将“minConnectionsPerHost”设置为所需的数字,但当我执行代码时,它几乎无法打开1或2个连接。但是,当我在应用程序上加载时,连接计数会慢慢增加以适应流量。我想在我的应用程序开始使用流量之前创建这些连接Java 有没有办法在应用程序启动时使用MongoClient创建一组到mongodb的X连接?,java,mongodb,mongo-java-driver,Java,Mongodb,Mongo Java Driver,我希望在应用程序启动时(即在应用程序开始传输流量之前)创建到mongodb的“X”个连接 MongoDB版本:4.0.11 Mongo Java驱动程序版本(maven):3.4.1 我尝试将“minConnectionsPerHost”设置为所需的数字,但当我执行代码时,它几乎无法打开1或2个连接。但是,当我在应用程序上加载时,连接计数会慢慢增加以适应流量。我想在我的应用程序开始使用流量之前创建这些连接 ServerAddress address = new ServerAdd
ServerAddress address = new ServerAddress("localhost", 27017);
List<ServerAddress> serverAddresses = Arrays.asList(address);
MongoCredential credential =
MongoCredential.createCredential("XXXX", "XXXX",
"XXXX".toCharArray());
List<MongoCredential> mongoCredentials =
Arrays.asList(credential);
MongoClientOptions clientOptions =
MongoClientOptions.builder().connectionsPerHost(100).
minConnectionsPerHost(50).build();
MongoClient mongoClient = new MongoClient(serverAddresses,
mongoCredentials, clientOptions);
ServerAddress=newserveraddress(“localhost”,27017);
List serverAddresses=Arrays.asList(地址);
MongoCredential凭证=
MongoCredential.createCredential(“XXXX”、“XXXX”,
“XXXX”.toCharArray());
列表mongoCredentials=
asList(凭证);
MongoClientOptions客户端选项=
MongoClientOptions.builder().connectionsPerHost(100)。
minConnectionsPerHost(50.build();
MongoClient MongoClient=新的MongoClient(服务器地址,
mongoCredentials、clientOptions);
有没有办法使用mongo java驱动程序实现这一点?您可以在选项生成器中设置
minConnectionsPerHost()
,然后使用预热脚本创建多个连接。连接池将保持minConnectionsPerHost连接处于活动状态而不关闭
预热脚本可以有一个程序,该程序每主机生成2*minConnectionsPerHost线程数,这将连接并执行可能是一个虚拟读取操作。这样,连接将被打开,最小连接将保持活动状态
这似乎是一个肮脏的解决方案:-)但可能有效 你的意思是连接池?我认为它在内部已经为你创建了许多连接和队列。因此,如果一个连接正忙于获取信息,您的应用程序可以使用队列中的另一个连接来获取另一个信息。连接对象很重,这就是它们没有预先创建和保存的原因。连接池是数据库连接中常用的策略。为什么你觉得必须提前创建它?@FarazDurrani有办法验证这一点吗?当我解释mongo db上的服务器统计信息时,我只看到一个连接
db.serverStatus().connections{“current”:1,“available”:203,“totalCreated”:29,“active”:1}
@Vinil请查看此步骤