Adakah amqp.Dial Thread-Selamat untuk Penciptaan Sambungan dalam Go? Perbahasan mengenai Sambungan Global lwn Per-Permintaan.

Mary-Kate Olsen
Lepaskan: 2024-10-28 12:23:02
asal
369 orang telah melayarinya

 Is amqp.Dial Thread-Safe for Connection Creation in Go? A Debate on Global vs. Per-Request Connections.

Keselamatan Benang amqp.Dail dalam Go Lang untuk Penciptaan Sambungan

Mencipta sambungan TCP untuk AMQP boleh menjadi operasi yang mahal. Untuk mengatasinya, saluran telah diperkenalkan. Walau bagaimanapun, perbincangan telah timbul sama ada untuk membuat sambungan setiap kali atau mengisytiharkannya secara global sekali.

Soalan:

Contoh terkini dalam fungsi utama() bagi aplikasi Go menunjukkan penciptaan sambungan setiap kali mesej diterbitkan. Pendekatan ini menimbulkan persoalan sama ada lebih sesuai untuk mempunyai sambungan yang diisytiharkan secara global dengan mekanisme failover sekiranya berlaku penutupan sambungan, terutamanya dengan mengambil kira sifat selamat benang amqp.Dial yang diandaikan.

Jawapan:

Adalah tidak digalakkan untuk membuat sambungan untuk setiap permintaan. Sebaliknya, pertimbangkan untuk menjadikan sambungan pembolehubah global atau sebahagian daripada konteks aplikasi yang dimulakan sekali sahaja semasa permulaan.

Untuk mengendalikan ralat sambungan, amqp.Connection.NotifyClose boleh digunakan untuk mendaftarkan saluran bagi memantau status sambungan . Apabila ralat berlaku, sambungan boleh diwujudkan semula menggunakan fungsi sambung semula.

Contoh:

<code class="go">import (
    "github.com/streadway/amqp"
)

func initialize() {
    c := make(chan *amqp.Error)
    go func() {
        err := <-c
        log.Println("reconnect: " + err.Error())
        initialize()
    }()

    conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
    if err != nil {
        panic("cannot connect")
    }
    conn.NotifyClose(c)

    // create topology
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Adakah amqp.Dial Thread-Selamat untuk Penciptaan Sambungan dalam Go? Perbahasan mengenai Sambungan Global lwn Per-Permintaan.. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!