我尝试使用pika获取RabbitMQ队列中的项目数。我有以下运行:
params = pika.ConnectionParameters(host='my.host.com', port=5672, credentials=pika.credentials.PlainCredentials('myuser', 'myauth'))
connection = pika.BlockingConnection(parameters=params)
channel = connection.channel()
response = channel.queue_declare(passive=True, queue='my-queue-name')
count = response.method.message_count
channel.close()
print response
当我运行它时,无论队列中有多少项,count
始终为0。我可以看到rabbitmqctl
中的项目,但我的脚本不会显示它们。我在这里做错了什么?
答案 0 :(得分:0)
回答可能为时已晚,但我面临着几乎相同的问题。我需要对发布者的队列进行一些限制,因此我决定定期检查队列大小以减慢处理速度。但是,当我提出消费者的队列末尾时,皮卡的queue_declare(..., passive=True).method.message_count
开始报告零。经过一段时间的测试和浏览代码/示例后,我发现设置channel.basic_qos(prefetch_count=1)
可以解决问题。希望这会有所帮助。