架构
考虑一个有DB记录的系统。每个记录都可以处于live或expired状态;应该使用外部软件模块定期处理live记录。
我已经解决了这一问题,使用了一个经典的生产者-消费者架构与Kombu和RabbitMQ。生产者每隔几秒钟从数据库中获取记录,由使用者处理它们。

问题所在
live事件的数量变化很大,在高峰时间,使用者无法处理负载,队列被上千项阻塞。
我想使系统具有适应性,这样如果队列为空,生产者就不会向使用者发送新事件。
我试过什么
http://<host>:<port/api/queues/<vhost>/<queue_name>。它可以工作,但它是另一个需要维护的机制,我更喜欢Kombu内部的一个优雅的解决方案。如何使用RabbitMQ的Kombu?检查RabbitMQ是否为空
发布于 2017-02-01 19:58:07
可以在kombu对象上调用queue_declare()。
根据文档,函数返回:
Returns a tuple containing 3 items:
the name of the queue (essential for automatically-named queues)
message count
consumer count因此,你可以:
name, msg_count, consumer_count = queue.queue_declare()https://stackoverflow.com/questions/40463301
复制相似问题