之前消耗我设置
consumeChannel.Qos(5,0,false)
但仍然只得到一个消息,五不包。我在做什么错?
全码:
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)
}
但仍然只得到一个消息,五不包。我在做什么错?
你不知道如何的RabbitMQ和QoS /预取作品(docs),或它如何与围棋客户端的range
操作交互。
服务质量并不意味着“分批发送消息”,这将限制在通道上未确认的消息的数量。如果要删除d.Ack
呼叫你的代码,并无限期地运行for
循环,也只是5次迭代运行,然后停下来,因为RabbitMQ的将被停止传递邮件,然后到你的消费者。
我还没有审查的代码,但我假设你正在使用被写在,一旦消息已被接收并解码,它被传递到msgs
通道这样的方式转到客户端。当你在循环ACK消息,它表明的RabbitMQ多了一个消息可以被传递到该通道。
我建议重新编写代码来跟踪有多少消息已经通过msgs
通道被交付,做你的工作,然后用multiple acknowledgement来确认他们都在同一时间。
注:RabbitMQ的团队监控rabbitmq-users
mailing list和只是有时在计算器上回答问题。