Maison > développement back-end > Golang > Comment se connecter à MongoDB Atlas depuis Go : résoudre les problèmes de délai d'attente et d'accessibilité du serveur ?

Comment se connecter à MongoDB Atlas depuis Go : résoudre les problèmes de délai d'attente et d'accessibilité du serveur ?

Mary-Kate Olsen
Libérer: 2025-01-03 07:44:40
original
869 Les gens l'ont consulté

How to Connect to MongoDB Atlas from Go: Solving Timeout and Server Reachability Issues?

Établissement d'une connexion MongoDB Atlas depuis Go à l'aide d'une nouvelle structure d'URL (MongoDB 3.6)

Lors de vos précédentes tentatives de connexion à MongoDB Atlas depuis Go à l'aide de mgo, vous avez rencontré des problèmes avec le délai d'expiration de DialInfo et l'accessibilité du serveur. Explorons ces problèmes et proposons des solutions :

Zero Timeout

Le DialInfo par défaut a un délai d'attente nul, ce qui entraîne le blocage indéfini du processus d'établissement de la connexion. Pour résoudre ce problème, vous pouvez définir explicitement un délai d'attente en utilisant :

dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)
Copier après la connexion

Serveurs inaccessibles

Votre préoccupation concernant les serveurs inaccessibles provient du manque de prise en charge par mgo du format URI de la chaîne de connexion SRV (MongoDB v3 .4). Pour résoudre cette limitation, vous pouvez utiliser le format d'URI de connexion non-srv :

mongoURI = "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net:27017/dbname?ssl=true&retryWrites=true"
Copier après la connexion

Pilote Go alternatif pour SRV

Si vous préférez utiliser SRV dans votre URI de connexion, envisagez d'utiliser le mongo-go-driver. Voici un exemple :

mongoURI := "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net/dbname?ssl=true&retryWrites=true"

client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
if err != nil {
    log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err = client.Connect(ctx)
defer client.Disconnect(ctx)

if err != nil {
    log.Fatal(err)
}
database := client.Database("go")
collection := database.Collection("atlas")
Copier après la connexion

Notez que ce code est compatible avec la version actuelle de mongo-go-driver (v1.0.0).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal