RabbitMQ的交换队列的最大长度

问题描述 投票:-1回答:1

我尝试应用了基于RabbitMQ的在我的应用程序的一些流量控制。

一个很窄的简短过我的系统:

  • 有迹象表明,扫描并输入目录和消息发布到交换一些蓝工人。
  • 还有其他的红色工,从这个交换(基于路由键)消费和为所欲为的数据,比删除它做。

那就是“存储”在交换的数据是相当大的,并且需要一个工人走在它的时间是明显的。过了一段时间我正在从RabbitMQ的内存警告其中规定,内存占用率过高和所有发布操作都将停止。

我试图增加内存的RabbitMQ的量使用,但它只是推迟问题,在几个小时内(运行时)。我也做了,而不是基于RAM的队列基于磁盘的,但我的磁盘得到充分代替。

因为我的投入并不大,我可以从蓝色工读取输入一个“大”输入队列生活。所以我想尝试,并设置一些“最大长度”的蓝工人与交换机之间的链路上。我相信,因为我的系统的真正瓶颈是红色工(由我宣布红工人,并用prefech_count=2交易所之间的联系方式)我不会在这里失去任何东西。

说一切之后...我没能施加这样的最大长度:(我使用Pika宣布我的队列,并与渠道合作。我读到这(https://www.rabbitmq.com/maxlength.html),但没能实现它在我代码,我希望看到使用该最大尺寸的标志的例子。

rabbitmq rabbitmq-exchange
1个回答
0
投票

交流不存储消息:队列做。

如果你设置了队列的最大长度,设置在arguments调用相应的queue_declare(),这将不适合它的消息,会被丢弃。

然而出版商将能够发布消息的交换没有注意到它。

生产者可以得到有关他们未能使用dead-lettering通知。

如果你想一些帮助的代码,包括在问题的代码。

© www.soinside.com 2019 - 2024. All rights reserved.