rabbitmq消费者 go语言实现
时间: 2023-11-02 17:07:30 浏览: 48
以下是RabbitMQ消费者的Go语言实现示例:
```go
package main
import (
"fmt"
"log"
"github.com/streadway/amqp"
)
func main() {
// 连接RabbitMQ服务器
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
if err != nil {
log.Fatalf("Failed to connect to RabbitMQ: %v", err)
}
defer conn.Close()
// 创建一个通道
ch, err := conn.Channel()
if err != nil {
log.Fatalf("Failed to open a channel: %v", err)
}
defer ch.Close()
// 声明一个队列
q, err := ch.QueueDeclare(
"hello", // 队列名称
false, // 是否持久化
false, // 是否自动删除
false, // 是否排他
false, // 是否等待服务器响应
nil, // 额外参数
)
if err != nil {
log.Fatalf("Failed to declare a queue: %v", err)
}
// 消费消息
msgs, err := ch.Consume(
q.Name, // 队列名称
"", // 消费者标签
true, // 是否自动应答
false, // 是否独占
false, // 是否等待服务器响应
false, // 额外参数
)
if err != nil {
log.Fatalf("Failed to consume message: %v", err)
}
// 循环接收消息
for msg := range msgs {
fmt.Println(string(msg.Body))
}
}
```
在此示例中,我们首先连接到RabbitMQ服务器,然后创建一个通道。接下来,我们声明一个名为“hello”的队列。最后,我们使用ch.Consume()方法轮询接收消息并打印出来。
请注意,我们在ch.Consume()方法中将自动应答设置为true。这意味着一旦消费者接收到消息,它就会自动确认。如果您希望控制何时确认消息,请将此选项设置为false,并在处理完消息后手动确认。