Viděl jsem pouze, že kód začal, pak nic
Jak jste zjistili, je to proto, že DialInfo má ve výchozím nastavení nulový časový limit. Hovor bude navždy zablokován čekání na navázání spojení. Časový limit můžete také určit pomocí:
dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)
Nyní nemám žádné dostupné servery
Důvodem je, že globalsign/mgo zatím nepodporuje URI připojovacího řetězce SRV. Viz problémy 112. Můžete použít jiný formát URI připojení než SRV (MongoDB v3.4), viz související otázka StackOverflow:41173720.
Místo toho můžete použít mongo-go-driver, pokud se chcete připojit pomocí URI připojení SRV, například:
mongoURI := "mongodb+srv://admin:[email protected]/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")
Výše uvedený příklad je kompatibilní s aktuální verzí v1.0.0