MongoDB пул соединений в официальном драйвере Голанга - PullRequest
1 голос
/ 14 октября 2019

У меня есть два файла go в проекте

  1. main.go

Эти файлы создают соединение с сервером http и mongoDB и метод, который позволит повторно использовать соединение, используяследующий

func ConnectMongoDB() {

    ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)

    // user Connection database

    // Set client options
    clientOptions := options.Client().ApplyURI("mongodb+srv://localhost:27017/demo")

    // Connect to MongoDB
    userclient, err = mongo.Connect(ctx, clientOptions)

    if err != nil {
        log.Fatal(err)
    }

    // Check the connection
    err = userclient.Ping(ctx, nil)

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Connected to user MongoDB!")

}

//GetMongoDBClient , return mongo client for CRUD operations
func GetMongoDBClient() *mongo.Client {

    return userclient
}

query.go

Этот файл затем определяет базу данных, а затем запускает запрос по ней

client := GetMongoDBClient()

collection := client.Database("demo").Collection("user")

err := collection.FindOne(context.TODO(), filter).Decode(&user)

Когда я отправил 200 запросов, я получил письмо от Atlas, в котором говорилось, что у меня естьпревысил мою предельную квоту в 80 соединений. Как использовать пул соединений здесь?

1 Ответ

1 голос
/ 14 октября 2019

Вы пробовали опцию MaxPoolSize:

clientOptions = clientOptions.SetMaxPoolSize(50)

Я не пробовал это в официальном драйвере mongo, но у драйвера mgo есть аналогичная опция, которая работает, как и ожидалось.

...