dongzexi5125 2019-02-07 19:47
浏览 122
已采纳

如何使用Rabbitmq的一批消息?

Before consuming i set

consumeChannel.Qos(5,0,false)

but still getting only one message, not a pack of five. what i'm doing wrong?

full code:

consumeChannel.Qos(5,0,false)
msgs, _ := consumeChannel.Consume("ticks", "", false, false, false, false, nil, )

for d := range msgs {
    println("Received a message: %s", d.Body)
    println("Done")
    //here will be some extra multiple message handling
    //d.Ack(false)
}
  • 写回答

1条回答 默认 最新

  • dougong2005 2019-02-08 14:34
    关注

    but still getting only one message, not a pack of five. what i'm doing wrong?

    You don't understand how RabbitMQ and QoS / prefetch works (docs), or how it interacts with the range operator of the Go client.

    QoS does not mean "send messages in batches", it sets a limit to the number of unacknowledged messages on a channel. If you were to remove the d.Ack call in your code and run the for loop indefinitely, it would only run for 5 iterations, then stop, because RabbitMQ would have stopped delivering messages by then to your consumer.

    I haven't reviewed the code, but I assume the Go client you're using is written in such a way that, as soon as a message has been received and decoded, it is delivered to the msgs channel. When you ack the message in the loop, it indicates to RabbitMQ that one more message can be delivered to that channel.

    I suggest re-writing your code to keep track of how many messages have been delivered via the msgs channel, do your work, and then use a multiple acknowledgement to ack them all at the same time.


    NOTE: the RabbitMQ team monitors the rabbitmq-users mailing list and only sometimes answers questions on StackOverflow.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口