Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Pulih dengan Anggun daripada Kegagalan Sambungan MongoDB dalam Go dengan MGO?

Bagaimana untuk Pulih dengan Anggun daripada Kegagalan Sambungan MongoDB dalam Go dengan MGO?

Mary-Kate Olsen
Lepaskan: 2024-11-14 14:53:02
asal
755 orang telah melayarinya

How to Gracefully Recover from MongoDB Connection Failures in Go with MGO?

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
}
Salin selepas log masuk

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")
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan