golang 操作rabbitMQ
时间: 2023-09-04 09:13:37 浏览: 161
golang版本的RabbitMQ消息订阅的封装,多生产者多消费者。
你可以使用Go语言的AMQP库来操作RabbitMQ。下面是一个简单的例子,展示了如何连接到RabbitMQ,发送消息和接收消息。
首先,你需要安装 `github.com/streadway/amqp` 包,可以使用以下命令进行安装:
```
go get github.com/streadway/amqp
```
然后,你可以使用以下代码来连接到RabbitMQ,并发送和接收消息:
```go
package main
import (
"log"
"github.com/streadway/amqp"
)
func failOnError(err error, msg string) {
if err != nil {
log.Fatalf("%s: %s", msg, err)
}
}
func main() {
// 连接到RabbitMQ
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
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(
"hello", // 队列名称
false, // 是否持久化
false, // 是否自动删除
false, // 是否排他
false, // 是否阻塞
nil, // 额外参数
)
failOnError(err, "Failed to declare a queue")
// 发送消息
body := "Hello RabbitMQ!"
err = ch.Publish(
"", // 交换器名称
q.Name, // 队列名称
false, // 是否强制
false, // 是否立即
amqp.Publishing{
ContentType: "text/plain",
Body: []byte(body),
})
failOnError(err, "Failed to publish a message")
log.Printf("Sent: %s", body)
// 接收消息
msgs, err := ch.Consume(
q.Name, // 队列名称
"", // 消费者名称
true, // 是否自动应答
false, // 是否排他
false, // 是否阻塞
false, // 额外参数
)
failOnError(err, "Failed to register a consumer")
forever := make(chan bool)
go func() {
for d := range msgs {
log.Printf("Received: %s", d.Body)
}
}()
log.Printf("Waiting for messages...")
<-forever
}
```
这个例子中,我们连接到`localhost:5672`上的RabbitMQ服务器,并创建一个名为`hello`的队列。然后,我们发送一条消息到该队列,并通过消费者来接收该队列中的消息。
你可以根据自己的需求修改队列的名称、连接地址和发送的消息内容。记得在使用前先启动RabbitMQ服务器。
阅读全文