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.

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

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?