首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kombu+RabbitMQ:检查队列是否为空

Kombu+RabbitMQ:检查队列是否为空
EN

Stack Overflow用户
提问于 2016-11-07 10:47:29
回答 1查看 2.8K关注 0票数 4

架构

考虑一个有DB记录的系统。每个记录都可以处于liveexpired状态;应该使用外部软件模块定期处理live记录。

我已经解决了这一问题,使用了一个经典的生产者-消费者架构与Kombu和RabbitMQ。生产者每隔几秒钟从数据库中获取记录,由使用者处理它们。

问题所在

live事件的数量变化很大,在高峰时间,使用者无法处理负载,队列被上千项阻塞。

我想使系统具有适应性,这样如果队列为空,生产者就不会向使用者发送新事件。

我试过什么

  • 搜索Kombu文档/ API
  • 检查队列对象
  • 使用RabbitMQ REST:http://<host>:<port/api/queues/<vhost>/<queue_name>。它可以工作,但它是另一个需要维护的机制,我更喜欢Kombu内部的一个优雅的解决方案。

如何使用RabbitMQ的Kombu?检查RabbitMQ是否为空

EN

回答 1

Stack Overflow用户

发布于 2017-02-01 19:58:07

可以在kombu对象上调用queue_declare()。

根据文档,函数返回:

代码语言:javascript
复制
Returns a tuple containing 3 items:
        the name of the queue (essential for automatically-named queues)
        message count
        consumer count

因此,你可以:

代码语言:javascript
复制
name, msg_count, consumer_count = queue.queue_declare()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40463301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档