千家信息网

Golang rabbitMQ生产者和消费者怎么实现

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,今天小编给大家分享一下Golang rabbitMQ生产者和消费者怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
千家信息网最后更新 2025年02月22日Golang rabbitMQ生产者和消费者怎么实现

今天小编给大家分享一下Golang rabbitMQ生产者和消费者怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

消费者

package mainimport (        "fmt"        "github.com/streadway/amqp")func failOnError(err error, msg string) {        if err != nil {                fmt.Println("%s: %s", msg, err)        }}// 只能在安装 rabbitmq 的服务器上操作func main() {        conn, err := amqp.Dial("amqp://mquser:123456@127.0.0.1/toutiao")        failOnError(err, "Failed to connect to RabbitMQ")        defer conn.Close()        ch, err := conn.Channel()        failOnError(err, "Failed to open a channel")        defer ch.Close()        q, err := ch.QueueDeclare(                "toutiao.web.test", // 队列名字                false,   // durable                false,   // delete when unused                false,   // exclusive                false,   // no-wait                nil,     // arguments        )        failOnError(err, "Failed to declare a queue")        msgs, err := ch.Consume(                q.Name,            // queue                "toutiao",     // consumer                true,   // auto-ack,true消费了就消失                false,  // exclusive                false,  // no-local                false,  // no-wait                nil,    // args        )        failOnError(err, "Failed to register a consumer")        forever := make(chan bool)        go func() {                for d := range msgs {                        fmt.Println(fmt.Sprintf("返回的消息:%s",d.Body))                }        }()        fmt.Println("[*] Waiting for messages. To exit press CTRL+C")        <-forever}

生产者

body:消息体

package mainimport (        "github.com/streadway/amqp"        "log")func failOnError(err error, msg string) {        if err != nil {                log.Fatalf("%s: %s", msg, err)        }}// 只能在安装 rabbitmq 的服务器上操作func main() {        conn, err := amqp.Dial("amqp://mquser:123456@127.0.0.1/toutiao")        failOnError(err, "Failed to connect to RabbitMQ")        defer conn.Close()        ch, err := conn.Channel()        failOnError(err, "Failed to open a channel")        defer ch.Close()        q, err := ch.QueueDeclare(        "toutiao.web.test",   // name                false, // durable                false, // delete when unused                false, // exclusive                false, // no-wait                nil, // arguments)        failOnError(err, "Failed to declare a queue")        body := "Hello World!"  //发送的消息        err = ch.Publish(        "",         // exchange                q.Name, // routing key                false,  // mandatory                false,  // immediate                amqp.Publishing{                ContentType: "text/plain",                        Body:        []byte(body),                })        log.Printf(" [x] Sent %s", body)        failOnError(err, "Failed to publish a message")}

以上就是"Golang rabbitMQ生产者和消费者怎么实现"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0