RabbitMQ快速上手(延迟队列)

您所在的位置:网站首页 qq收到消息延迟 RabbitMQ快速上手(延迟队列)

RabbitMQ快速上手(延迟队列)

2023-07-04 08:04| 来源: 网络整理| 查看: 265

安装

官网

参考文章: ​ https://blog.csdn.net/miaoye520/article/details/123207661 ​ https://blog.csdn.net/lvoelife/article/details/126658695

安装Erlang,并添加环境变量ERLANG_HOME,命令行运行erl

安装rabbitmq,rabbitmq-server-3.12.0.exe

注意Erlang要选择对应的版本

安装RabbitMQ-Plugins插件,rabbitmq-plugins enable rabbitmq_management

访问 http://localhost:15672/

账号密码 guest,guest

使用

中文文档

参考文章: https://blog.csdn.net/weixin_45698935/article/details/123481137 https://www.liwenzhou.com/posts/Go/rabbitmq-1/

Go实践:

go get github.com/streadway/amqp 

基本使用:

生产者

package main ​ import ( "github.com/streadway/amqp" "log" ) ​ type App struct { Name string Num int } ​ type Root struct { Apps []*App } ​ func main() { // 1.尝试连接RabbitMQ,建立连接 // 该连接抽象了套接字连接,并为我们处理协议版本协商和认证等。 conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") if err != nil { log.Fatalf(err.Error()) } defer conn.Close() ​ // 2.创建一个通道, 大多数API都是该通道操作的 ch, err := conn.Channel() defer ch.Close() ​ // 3.声明消息要发送的队列 q, err := ch.QueueDeclare("hello", false, false, false, false, nil) if err != nil { log.Fatalf(err.Error()) } ​ body := "hello world12" err = ch.Publish("", q.Name, false, false, amqp.Publishing{ ContentType: "text/plain", Body: []byte(body), }) if err != nil { log.Fatalf(err.Error()) } ​ return }

消费者

package main ​ import ( "github.com/streadway/amqp" "log" ) ​ func main() { // 1.尝试连接RabbitMQ,建立连接 // 该连接抽象了套接字连接,并为我们处理协议版本协商和认证等。 conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") if err != nil { log.Fatalf(err.Error()) } defer conn.Close() ​ // 2.创建一个通道, 大多数API都是该通道操作的 ch, err := conn.Channel() defer ch.Close() ​ // 3.声明消息要发送的队列 q, err := ch.QueueDeclare("hello", false, false, false, false, nil) if err != nil { log.Fatalf(err.Error()) } ​ // 获取接收消息的Delivery通道 msgs, err := ch.Consume( q.Name, // queue "",     // consumer true,   // auto-ack false,  // exclusive false,  // no-local false,  // no-wait nil,    // args ) if err != nil { log.Println(err.Error(), "Failed to register a consumer") } ​ 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")


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3