2
Mongo m = new MongoClient(new ServerAddress(server , port), creds, MongoClientOptions.builder().connectTimeout(2000).socketTimeout(2000).serverSelectionTimeout(10000).socketKeepAlive(true).build()); 

我想测试connectionTimeOut一个独立的服务器。每次我为客户端定义错误的端口或停止服务器时,它都会在选择服务器步骤上失败并返回一个serverSelectionTimeOut. 如何connectionTimeOut在开发环境中测试阈值?

4

1 回答 1

0

您需要确保连接到现有服务器(主机名和端口),因为连接是在服务器选择过程之后建立的。如果服务器选择失败,它将不会进入连接设置步骤。

如果没有始终可用于测试的 Mongo 服务器,请尝试在本地计算机上动态部署嵌入式 Mongo 服务器。您可以编写一个在测试开始时自动启动嵌入式 Mongo 的单元测试(如此处所示。或者,您可以使用MongoUnit进行测试,但我自己没有这方面的经验。

一旦你有一个合适的服务器,你可以通过将超时值设置为 1 毫秒来强制连接超时。你可以在代码中做到这一点

MongoClientOptions.builder().connectTimeout(1)

或通过将设置添加到您的数据库 URL

mongodb://localhost:27017/your_database?connectTimeoutMS=1
于 2019-12-14T12:02:55.590 回答