mongocxx连接池连接超时时间设置

MongoDB连接池的超时时间设置在连接字符串中设置,并且在进行通信时才会真实建立连接。
比如设置连接超时时间为1秒时:

mongodb://127.0.0.1:27017/?serverSelectionTimeoutMS=1000

以下是我的初始化连接函数:

std::expected<void, QString> MongoPool::init(const std::string& ip, uint16_t port, const std::string& username, const std::string& password)
{
    try
    {
        mongocxx::uri uri { username.empty() ? std::format("mongodb://{}:{}/?serverSelectionTimeoutMS=1000", ip, port)
                                             : std::format("mongodb://{}:{}@{}:{}/?serverSelectionTimeoutMS=1000", username, password, ip, port) };
        m_impl->pool = std::make_shared<mongocxx::pool>(uri);
        auto client = m_impl->pool->acquire();
        client->list_database_names(); // 查询以下数据库名称列表,确定数据库连接成功
        return {};
    }
    catch (const std::exception& e)
    {
        return std::unexpected(QString::fromLocal8Bit(e.what()));
    }
}

你可能感兴趣的:(MongoDB,c++,mongodb)