我学习了本教程的示例,但是它只读取了一次队列中的所有消息,如何从队列中只读取一条消息?感激不尽!
messages, err := channelRabbitMQ.Consume(
"QueueService1", // queue name
"", // consumer
true, // auto-ack
false, // exclusive
false, // no local
false, // no wait
nil, // arguments
)
if err != nil {
log.Println(err)
}
msg := <-messages
fmt.Println(string(msg.Body))发布于 2022-03-18 13:50:47
您可以使用Qos将通道配置为一次只接收一条消息。
url := "..."
queue := "..."
conn, err := amqp.Dial(url)
if err != nil {
log.Fatal("Cannot connect to rabbitmq")
}
ch, err := conn.Channel()
if err != nil {
log.Fatal("Cannot create channel")
}
if _, err := ch.QueueDeclare(queue, false, true, false, false, nil); err != nil {
log.Fatal("Cannot create queue")
}
// Indicate we only want 1 message to acknowledge at a time.
if err := ch.Qos(1, 0, false); err != nil {
log.Fatal("Qos Setting was unsuccessfull")
}
// Exclusive consumer
messages, err := ch.Consume(queue, "", false, true, false, false, nil)
msg := <-messages
fmt.Println(string(msg.Body))https://stackoverflow.com/questions/71527323
复制相似问题