【问题标题】:How to set MongoClient connection timeout?如何设置 MongoClient 连接超时?
【发布时间】:2021-01-11 20:52:58
【问题描述】:

我有一个服务器,它首先连接到 MongoDB 实例,然后启动 Web 服务器。如果 MongoDB 实例不可用,则没有必要启动 Web 服务器,所以我想我需要以某种方式将超时设置为 5 秒。

我该怎么做?

这是我的代码:

MongoClient.connect(Config.database.url).then((db) => {
        console.log('Connected to MongoDB');
        databaseInstance = db;
       // start web server
    })

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:
    • 要定义初始连接的超时时间,请使用serverSelectionTimeoutMS
    • 正在进行的连接定义超时connectTimeoutMS

    MongoDB 3.6 连接示例:

    const client = new MongoClient(Config.database.url, {
      connectTimeoutMS: 5000,
      serverSelectionTimeoutMS: 5000
    })
    
    client.connect(err => {
      console.log('Connected to MongoDB')
      // ..
    })
    

    official docs for serverSelectionTimeoutMS

    【讨论】:

    • 谢谢 - 这正是我(我怀疑 OP,尽管将其他答案标记为正确)正在寻找的东西。 connectTimeoutMS 没有使初始连接超时。 serverSelectionTimeoutMS 正是我们想要的。
    • serverSelectionTimeoutMS 指定在引发异常之前阻止服务器选择的时间(以毫秒为单位) - 这不仅仅是此答案中暗示的初始连接
    【解决方案2】:

    你可以像这样使用“connectTimeoutMS”

    MongoClient.connect(Config.database.url, {
        server: {
            socketOptions: {
                connectTimeoutMS: 5000
            }
        }
    }).then((db) => {
        console.log('Connected to MongoDB');
        databaseInstance = db;
       // start web server
    })
    

    这里有更多关于它的信息......

    http://mongodb.github.io/node-mongodb-native/2.0/reference/connecting/connection-settings/ https://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html

    【讨论】:

    • 我实际上并不认为这是 OP 想要的(尽管他们将其标记为已接受)。 connectTimeoutMS 并不是大多数人认为的连接超时。 请参阅下面的@Ricky 的回答。
    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2012-05-01
    • 2016-06-09
    相关资源
    最近更新 更多