Memulihkan daripada Kegagalan Sambungan MongoDB dalam Go dengan MGO
Dalam Go, pakej MGO digunakan untuk berinteraksi dengan MongoDB. Walau bagaimanapun, penyambungan ke MongoDB kadangkala boleh gagal, menyebabkan panik dalam program. Artikel ini menyediakan penyelesaian untuk pulih dengan anggun daripada kegagalan sambungan sedemikian.
Fungsi berikut cuba menyambung ke MongoDB dan mengembalikan sesi dan koleksi jika berjaya:
func connectToMongo(sess *mgo.Session, coll *mgo.Collection, sessionErr error) bool { fmt.Println("enter main - connecting to mongo") defer func() { if r := recover(); r != nil { fmt.Println("Detected panic") var ok bool err, ok := r.(error) if !ok { fmt.Printf("pkg: %v, error: %s", r, err) } } }() maxWait := time.Duration(5 * time.Second) session, sessionErr = mgo.DialWithTimeout("localhost:27017", maxWait) if sessionErr == nil { session.SetMode(mgo.Monotonic, true) coll = session.DB("MyDB").C("MyCollection") if coll != nil { fmt.Println("Got a collection object") return true } } else { // never gets here fmt.Println("Unable to connect to local mongo instance!") } return false }
Masalah dengan yang asal kod ialah panik mengganggu program sebelum fungsi tangguh dapat dilaksanakan. Untuk membetulkannya, fungsi recover() harus dipanggil di dalam pernyataan tangguh, selepas percubaan sambungan.
Kod yang diubah suai:
var mongoUp bool func init() { if ( connectToMongo() ) { mongoUp := true fmt.Println("Connected") } else { mongoUp = false fmt.Println("Not Connected") } }
Apabila MongoDB berjalan, program berjaya menyambung dan menetapkan mongoUp kepada benar. Apabila MongoDB tidak berjalan, atur cara merekodkan kegagalan dan menetapkan mongoUp kepada false.
Penyelesaian ini membolehkan atur cara mengendalikan kegagalan sambungan MongoDB dengan anggun dan meneruskan pelaksanaan tanpa ranap.
Atas ialah kandungan terperinci Bagaimana untuk Pulih dengan Anggun daripada Kegagalan Sambungan MongoDB dalam Go dengan MGO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!