考虑具有DB记录的系统。每条记录都可以处于live
或expired
状态;应使用外部软件模块定期处理live
条记录。
我使用Kombu和RabbitMQ的经典制作人 - 消费者架构解决了这个问题。生产者每隔几秒从DB中提取记录,消费者处理它们。
live
事件的数量差别很大,在高峰时段,消费者无法处理负载,并且队列被数千个项目堵塞。
我想使系统自适应,以便生产者在队列为空时不会向消费者发送新事件。
http://<host>:<port/api/queues/<vhost>/<queue_name>
。它有效,但它是另一种维护机制,我更喜欢Kombu内的优雅解决方案。如何使用Python的Kombu检查RabbitMQ是否为空?
答案 0 :(得分:1)
您可以在kombu Queue对象上调用queue_declare()。
根据docs函数返回:
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()