Heim >Backend-Entwicklung >Golang >Wie kann ich von unterwegs aus eine Verbindung zu MongoDB Atlas herstellen: Timeout- und Server-Erreichbarkeitsprobleme lösen?

Wie kann ich von unterwegs aus eine Verbindung zu MongoDB Atlas herstellen: Timeout- und Server-Erreichbarkeitsprobleme lösen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 07:44:40908Durchsuche

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

Herstellen einer MongoDB Atlas-Verbindung von Go mithilfe einer neuen URL-Struktur (MongoDB 3.6)

Bei Ihren vorherigen Versuchen, eine Verbindung zu MongoDB Atlas von Go aus mithilfe von mgo herzustellen, sind Probleme mit aufgetreten das DialInfo-Timeout und die Servererreichbarkeit. Lassen Sie uns diese Probleme untersuchen und Lösungen bereitstellen:

Null-Timeout

Die Standard-DialInfo hat ein Null-Timeout, was dazu führt, dass der Verbindungsaufbauprozess auf unbestimmte Zeit blockiert wird. Um dieses Problem zu beheben, können Sie explizit eine Zeitüberschreitung festlegen, indem Sie Folgendes verwenden:

dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)

Nicht erreichbare Server

Ihre Besorgnis über nicht erreichbare Server rührt von der mangelnden Unterstützung von mgo für das SRV-Verbindungszeichenfolgen-URI-Format (MongoDB v3 .4). Um diese Einschränkung zu beheben, können Sie das Nicht-Srv-Verbindungs-URI-Format verwenden:

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

Alternativer Go-Treiber für SRV

Wenn Sie SRV lieber in Ihrem Verbindungs-URI verwenden möchten, sollten Sie die Verwendung von in Betracht ziehen Mongo-Go-Fahrer. Hier ist ein Beispiel:

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")

Beachten Sie, dass dieser Code mit der aktuellen Version von mongo-go-driver (v1.0.0) kompatibel ist.

Das obige ist der detaillierte Inhalt vonWie kann ich von unterwegs aus eine Verbindung zu MongoDB Atlas herstellen: Timeout- und Server-Erreichbarkeitsprobleme lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn