社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MQ

RabbitMQ交换队列最大长度

Andy Thomas • 5 年前 • 1350 次点击  

我试图在我的应用程序中应用一些基于rabbitmq的流控制。

关于我的系统的一个非常狭隘的简介:

  • 有一些BlueWorker扫描和输入目录,并将消息发布到Exchange。
  • 还有其他的red worker使用这个交换(基于路由密钥)并对数据执行任何操作,而不是删除它。

在交换中“存储”的数据相当大,工作人员查看这些数据所需的时间是显而易见的。一段时间后,我从rabbitmq收到一个内存警告,指出内存使用率过高,所有发布操作都已停止。

我试图增加rabbitmq正在使用的内存量,但它只是将问题推迟了几个小时(运行时)。我也使队列基于磁盘而不是基于ram,但我的磁盘却已满。

因为我的输入不是那么大,所以我可以使用一个“大”的输入队列,蓝色的工作人员阅读他们的输入。所以我想试着在蓝工和交易所之间的联系上设置一些“最大长度”。我相信我不会在这里失去任何东西,因为我的系统的真正瓶颈是红色工人(顺便说一句,我声明了红色工人和交易所之间的联系 prefech_count=2 )

说了这么多…我没能做到这么长:( 我正在使用 Pika 声明我的队列并使用通道。 我读过这个( https://www.rabbitmq.com/maxlength.html )但是没有在我的代码中实现它,我希望看到一个使用这个最大大小标志的示例。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43977
 
1350 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Sigismondo
Reply   •   1 楼
Sigismondo    6 年前

交换不存储消息:队列存储消息。

如果设置队列的最大长度,请设置 arguments queue_declare() 打电话,那些不合适的信息会被丢弃。

但是,发布者可以在不通知Exchange的情况下将邮件发布到Exchange。

生产商可以得到他们使用失败的通知。 dead-lettering .

如果你需要一些关于代码的帮助,请在问题中包含代码。