【问题标题】:Testing connectionTimeout threshold using Mongo Java driver 3.0.0使用 Mongo Java 驱动程序 3.0.0 测试 connectionTimeout 阈值
【发布时间】:2016-07-26 13:04:12
【问题描述】:
Mongo m = new MongoClient(new ServerAddress(server , port), creds, MongoClientOptions.builder().connectTimeout(2000).socketTimeout(2000).serverSelectionTimeout(10000).socketKeepAlive(true).build()); 

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

【问题讨论】:

    标签: mongodb mongodb-java connection-timeout mongo-java-driver


    【解决方案1】:

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

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

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

    MongoClientOptions.builder().connectTimeout(1)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2018-08-07
      • 2017-03-09
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多