Rumah > pembangunan bahagian belakang > Golang > Golang RabbitMQ: Reka bentuk dan pelaksanaan pemesejan yang boleh dipercayai

Golang RabbitMQ: Reka bentuk dan pelaksanaan pemesejan yang boleh dipercayai

WBOY
Lepaskan: 2023-09-27 16:03:44
asal
1362 orang telah melayarinya

Golang RabbitMQ: 实现可靠消息传递的设计与实现

Golang RabbitMQ: Reka bentuk dan pelaksanaan untuk mencapai penghantaran mesej yang boleh dipercayai

Pengenalan:
Dalam sistem edaran moden, penyampaian mesej adalah a corak komunikasi biasa. RabbitMQ ialah perisian tengah pemesejan sumber terbuka yang popular yang digunakan secara meluas dalam pelbagai sistem teragih. Artikel ini akan memperkenalkan cara menggunakan Golang dan RabbitMQ untuk mereka bentuk dan melaksanakan pemesejan yang boleh dipercayai. Kami akan menyelami pelbagai aspek pelaksanaan dan menyediakan contoh kod konkrit.

1. Pengenalan kepada RabbitMQ
RabbitMQ ialah perisian tengah pemesejan merentas platform berprestasi tinggi. Ia melaksanakan protokol AMQP (Advanced Message Qeuing Protocol) dan menyediakan fungsi penghantaran mesej dan baris gilir mesej yang boleh dipercayai. RabbitMQ adalah berdasarkan protokol komersil MQ (Baris Gilir Mesej. Ciri utamanya termasuk penghantaran mesej yang boleh dipercayai, sokongan untuk kegigihan mesej, pengedaran mesej, pengimbangan beban, dsb.

2. Integrasi Golang dan RabbitMQ
Sebagai bahasa pengaturcaraan yang cekap dan ringkas, Golang secara beransur-ansur digemari oleh pembangun. Di Golang, kami boleh menggunakan perpustakaan pihak ketiga github.com/streadway/amqp untuk mencapai penyepaduan dengan RabbitMQ. Pustaka ini menyediakan beberapa antara muka yang ringkas dan mudah digunakan untuk memudahkan kami menghantar dan menerima mesej.

3 Langkah untuk mereka bentuk sistem pemesejan yang boleh dipercayai

  1. Menyambung perkhidmatan RabbitMQ

    conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
    if err != nil {
     log.Fatal(err)
    }
    defer conn.Close()
    Salin selepas log masuk
    #🎜🎜 🎜🎜#Buat saluran mesej
  2. channel, err := conn.Channel()
    if err != nil {
     log.Fatal(err)
    }
    defer channel.Close()
    Salin selepas log masuk
  3. Baris gilir pengisytiharan
  4. queue, err := channel.QueueDeclare(
     "my_queue", //队列名称
     true,      //是否持久化
     false,     //是否自动删除
     false,     //是否具有排他性
     false,     //是否阻塞
     nil,       //其他参数
    )
    if err != nil {
     log.Fatal(err)
    }
    Salin selepas log masuk
  5. 🎜🎜#

    Baris gilir pengisytiharan
  6. err = channel.Publish(
     "",            // exchange名称
     queue.Name,    // routing key
     false,         // mandatory
     false,         // immediate
     amqp.Publishing{
         ContentType: "text/plain",
         Body:        []byte("Hello, RabbitMQ!"),
     })
    if err != nil {
     log.Fatal(err)
    }
    Salin selepas log masuk
  7. 🎜🎜🎜#🎜 🎜🎜#

  8. memakan mesej
  9. msgs, err := channel.Consume(
     queue.Name, // queue名称
     "",          // 消费者名称
     true,       //自动应答
     false,      //是否排他性
     false,      // 无等待
     false,      // 不限制数量
     nil,        //其他参数
    )
    if err != nil {
     log.Fatal(err)
    }
    for msg := range msgs {
     log.Printf("Received a message: %s", msg.Body)
    }
    Salin selepas log masuk

    Melalui langkah di atas, kita boleh mencapai penghantaran dan penerimaan mesej yang mudah. Tetapi dalam aplikasi praktikal, kita perlu mempertimbangkan isu seperti penghantaran mesej yang boleh dipercayai dan kegigihan baris gilir mesej.

  10. 4. Memastikan penyampaian mesej yang boleh dipercayai

    Kegigihan mesej#🎜reee🎜🎜
  1. Mekanisme pengesahan penghantaran

    err = channel.Publish(
     "", // exchange名称
     queue.Name, // routing key
     true, // mandatory
     false, // immediate
     amqp.Publishing{
         DeliveryMode: amqp.Persistent, // 持久化方式
         ContentType: "text/plain",
         Body: []byte("Hello, RabbitMQ!"),
     })
    if err != nil {
     log.Fatal(err)
    }
    Salin selepas log masuk
  2. Mekanisme pengesahan penggunaan

    channel.NotifyPublish(confirmChan)
    
    err = channel.Publish("", queue.Name, true, false, message)
    if err != nil {
     log.Fatal(err)
    }
    
    conf := <-confirmChan
    if !conf.Ack {
     log.Printf("Fail to send message: %s", message.Body)
    }
    Salin selepas log masuk
    #🎜🎜 di atas dapat memastikan mekanisme di atas,Th mesej ialah Kebolehpercayaan semasa penghantaran dan penggunaan. Dan sekiranya berlaku masa henti pelayan mesej atau kegagalan rangkaian, mesej juga boleh dijamin.
  3. 5. Ringkasan

    Artikel ini memperkenalkan cara menggunakan Golang dan RabbitMQ untuk melaksanakan sistem pemesejan yang boleh dipercayai. Dengan menggabungkan ciri hebat RabbitMQ dan Golang, kami boleh membina sistem pengedaran yang cekap dan boleh dipercayai. Saya berharap kandungan artikel ini dapat membantu pembaca dalam aplikasi mereka dalam projek sebenar.

  4. Rujukan:


https://www.rabbitmq.com/

https://github.com/streadway / amqp

    Atas ialah kandungan terperinci Golang RabbitMQ: Reka bentuk dan pelaksanaan pemesejan yang boleh dipercayai. 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
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan