【发布时间】:2019-02-06 10:50:06
【问题描述】:
我正在尝试在基于 RabbitMQ 的应用程序中应用一些流控制。
我的系统的一个非常狭窄的简介:
- 有一些蓝工扫描并输入目录并将消息发布到交换。
- 还有其他 red-workers 从这个交换中消费(基于路由键)并对数据执行任何操作而不是删除它。
“存储”在交换中的数据非常大,工作人员检查它所花费的时间是显而易见的。一段时间后,我收到来自 RabbitMQ 的内存警告,指出内存使用率过高,所有发布操作都已停止。
我试图增加 Rabbitmq 正在使用的内存量,但它只是将问题推迟了几个小时(运行时)。我还使队列基于磁盘而不是基于内存,但我的磁盘已满。
由于我的输入不是那么大,我可以忍受一个“大”输入队列,蓝色工人从中读取他们的输入。所以我想尝试在蓝工和交易所之间的链接上设置一些“最大长度”。我相信我不会在这里丢失任何东西,因为我系统的真正瓶颈是红色工人(顺便说一下,我用prefech_count=2 声明了红色工人和交易所之间的链接)。
说了这么多之后...我没有设法应用这样的最大长度:(
我正在使用Pika 来声明我的队列并使用频道。
我阅读了这篇文章 (https://www.rabbitmq.com/maxlength.html),但没有设法在我的代码中实现它,我希望看到一个使用这个 max-size 标志的示例。
【问题讨论】:
标签: rabbitmq rabbitmq-exchange