Menggunakan RabbitMQ untuk melaksanakan reka bentuk seni bina dipacu peristiwa di Golang

王林
Lepaskan: 2023-09-27 16:33:06
asal
1205 orang telah melayarinya

Menggunakan RabbitMQ untuk melaksanakan reka bentuk seni bina dipacu peristiwa di Golang

Menggunakan RabbitMQ di Golang untuk melaksanakan reka bentuk seni bina dipacu acara

Pengenalan:
Dengan pembangunan berterusan Internet, keperluan aplikasi semua saiz menjadi semakin kompleks. Aplikasi tunggal tradisional secara beransur-ansur tidak dapat memenuhi permintaan, dan seni bina yang diedarkan telah menjadi trend. Dalam seni bina teragih, corak reka bentuk seni bina dipacu peristiwa diterima pakai secara meluas, yang boleh memisahkan kebergantungan antara pelbagai komponen dan meningkatkan kebolehskalaan, pengembangan dan kebolehpercayaan sistem. Artikel ini akan memperkenalkan cara menggunakan Golang dan RabbitMQ untuk melaksanakan reka bentuk seni bina dipacu peristiwa.

1. Mengapa memilih Golang dan RabbitMQ
1.1 Kelebihan Golang
Golang ialah bahasa pengaturcaraan yang dibangunkan oleh Google. Golang mempunyai ciri-ciri pengaturcaraan serentak dan boleh mengendalikan sejumlah besar tugas serentak dengan mudah. Selain itu, Golang juga mempunyai kelebihan penyusunan pantas, pelaksanaan yang cekap, dan perpustakaan standard yang kaya, menjadikannya sangat sesuai untuk membina aplikasi teragih berprestasi tinggi.

1.2 Kelebihan RabbitMQ
RabbitMQ ialah perisian tengah mesej sumber terbuka, dilaksanakan berdasarkan protokol AMQP (Advanced Message Qeuing Protocol). Ia mempunyai ciri-ciri ketersediaan tinggi, kebolehpercayaan yang tinggi, prestasi tinggi, ketekunan mesej, dsb., dan boleh dengan mudah mencapai penyahgandingan antara pengeluar mesej dan pengguna. RabbitMQ juga menyediakan antara muka pengurusan visual untuk memudahkan pengurusan dan pemantauan penghantaran dan penerimaan mesej.

2. Gunakan RabbitMQ untuk melaksanakan reka bentuk seni bina dipacu acara di Golang
2.1 Pasang RabbitMQ
Pertama, kita perlu memasang RabbitMQ dalam persekitaran tempatan. Anda boleh memuat turun pakej pemasangan dari laman web rasmi RabbitMQ (https://www.rabbitmq.com/) dan memasangnya mengikut panduan.

2.2 Buat pengeluar dan pengguna
Seterusnya, kami mencipta program Golang dan menulis kod untuk pengeluar dan pengguna.

Pertama, kita perlu mengimport perpustakaan pelanggan Golang RabbitMQ, yang boleh dipasang menggunakan arahan berikut:

go get github.com/streadway/amqp 
Salin selepas log masuk

Kemudian, kami mencipta kod pengeluar dan pengguna masing-masing.

Kod pengeluar adalah seperti berikut:

package main

import (
    "log"

    "github.com/streadway/amqp"
)

func main() {
    conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
    if err != nil {
        log.Fatalf("Failed to connect to RabbitMQ: %s", err)
    }
    defer conn.Close()

    ch, err := conn.Channel()
    if err != nil {
        log.Fatalf("Failed to open a channel: %s", err)
    }
    defer ch.Close()

    q, err := ch.QueueDeclare(
        "event_queue", // 队列名称
        false,         // 非持久化
        false,         // 非自动删除
        false,         // 非独占队列
        false,         // 不等待消费者接收消息
        nil,           // 额外属性
    )
    if err != nil {
        log.Fatalf("Failed to declare a queue: %s", err)
    }

    body := "Hello, RabbitMQ!"
    err = ch.Publish(
        "",         // exchange
        q.Name,     // routing key
        false,      // mandatory
        false,      // immediate
        amqp.Publishing{
            ContentType: "text/plain",
            Body:        []byte(body),
        },
    )
    if err != nil {
        log.Fatalf("Failed to publish a message: %s", err)
    }

    log.Printf("Published a message to RabbitMQ")
}
Salin selepas log masuk

Kod pengguna adalah seperti berikut:

package main

import (
    "log"

    "github.com/streadway/amqp"
)

func main() {
    conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
    if err != nil {
        log.Fatalf("Failed to connect to RabbitMQ: %s", err)
    }
    defer conn.Close()

    ch, err := conn.Channel()
    if err != nil {
        log.Fatalf("Failed to open a channel: %s", err)
    }
    defer ch.Close()

    q, err := ch.QueueDeclare(
        "event_queue", // 队列名称
        false,         // 非持久化
        false,         // 非自动删除
        false,         // 非独占队列
        false,         // 不等待消费者接收消息
        nil,           // 额外属性
    )
    if err != nil {
        log.Fatalf("Failed to declare a queue: %s", err)
    }

    msgs, err := ch.Consume(
        q.Name, // 队列名称
        "",     // 消费者名称
        true,   // 自动应答
        false,  // 独占队列
        false,  // 不等待消费者接收消息
        false,  // 额外属性
        nil,
    )
    if err != nil {
        log.Fatalf("Failed to register a consumer: %s", err)
    }

    forever := make(chan bool)
    go func() {
        for d := range msgs {
            log.Printf("Received a message: %s", d.Body)
        }
    }()

    log.Printf("Waiting for messages. To exit press CTRL+C")

    <-forever
}
Salin selepas log masuk

Dengan kod di atas, kami membuat baris gilir bernama "event_queue" dan menghantar mesej kepada baris gilir melalui pengeluar. Pengguna mendengar baris gilir dan memproses mesej selepas menerimanya.

2.3 Menguji reka bentuk seni bina dipacu acara
Untuk menguji reka bentuk seni bina dipacu acara, kita boleh memulakan pengguna dahulu dan kemudian pengeluar.

Selepas memulakan pengeluar, pengguna akan segera menerima mesej yang dihantar oleh pengeluar dan mengeluarkannya ke konsol.

Ringkasan:
Melalui kod sampel di atas, kami menunjukkan cara menggunakan Golang dan RabbitMQ untuk melaksanakan reka bentuk seni bina dipacu peristiwa. Menggunakan model baris gilir mesej RabbitMQ, kami boleh mencapai penyahgandingan antara aplikasi dengan mudah dan meningkatkan kebolehskalaan dan kebolehlanjutan sistem. Pada masa yang sama, ciri pengaturcaraan serentak Golang membolehkan kami mengendalikan sebilangan besar mesej serentak dan meningkatkan prestasi sistem dengan cekap.

Melalui pembelajaran dan amalan, kami dapat memahami dengan mendalam dan menggunakan reka bentuk seni bina dipacu peristiwa untuk membina aplikasi teragih yang lebih mantap dan cekap.

Atas ialah kandungan terperinci Menggunakan RabbitMQ untuk melaksanakan reka bentuk seni bina dipacu peristiwa di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!