Ada*_*tan 5 python rabbitmq kombu
考虑一个带有数据库记录的系统。每条记录可以处于 alive或expired状态;live应使用外部软件模块定期处理记录。
我使用 Kombu 和 RabbitMQ 的经典生产者-消费者架构解决了这个问题。生产者每隔几秒从数据库中获取记录,然后消费者处理它们。
事件的数量live差异很大,在高峰时段,消费者无法处理负载,并且队列被数千个项目堵塞。
我想让系统具有适应性,这样如果队列为空,生产者就不会向消费者发送新事件。
http://<host>:<port/api/queues/<vhost>/<queue_name>. 它有效,但它是另一种需要维护的机制,我更喜欢 Kombu 中的优雅解决方案。如何使用 Python 的 Kombu 检查 RabbitMQ 是否为空?
您可以在 kombu 队列对象上调用queue_declare()。
根据文档该函数返回:
Returns a tuple containing 3 items:
the name of the queue (essential for automatically-named queues)
message count
consumer count
Run Code Online (Sandbox Code Playgroud)
因此你可以这样做:
name, msg_count, consumer_count = queue.queue_declare()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3223 次 |
| 最近记录: |