使用Mongo Java驱动程序3.0.0测试ConnectionTimeout阈值

时间:2016-07-26 13:04:13

标签: mongodb mongodb-java connection-timeout

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

我想测试connectionTimeOut到独立服务器。每次我为客户端或停止服务器定义错误的端口时,它都会在选择服务器步骤&给出serverSelectionTimeOut。如何在开发环境中测试connectionTimeOut阈值?

1 个答案:

答案 0 :(得分:0)

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

如果没有始终可用于测试的Mongo服务器,请尝试在本地计算机上即时部署embedded Mongo server。您可以编写一个单元测试,以在测试开始时自动启动嵌入式Mongo(如here所示)。 另外,您可以使用MongoUnit进行测试,但是我本人没有经验。

一旦拥有合适的服务器,就可以通过将超时值设置为1毫秒来强制进行connectionTimeout。您可以通过代码完成

MongoClientOptions.builder().connectTimeout(1)

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

mongodb://localhost:27017/your_database?connectTimeoutMS=1