【发布时间】:2018-01-30 13:53:58
【问题描述】:
我正在使用 celery 和 rabbitmq ,但是由于在队列中推送了几个任务,我的服务器内存利用率变得超过 40%,因此 rabbit 进一步不会接受任何任务。所以我想删除那些已经执行的消息,但是由于rabbitmq的持久行为,这些消息不会自动删除,所以我想设置一些配置,比如 autoAck=True ,这样如果消息是从 celery 中消耗的,它将从rabbitmq 队列,也来自我的服务器内存。请解释一下我们该怎么做。
【问题讨论】:
-
我投票决定关闭,因为您没有提供足够的信息让我们帮助您。根据您提供的描述,消息没有从队列中删除,但这可能有很多原因。请提供有关您正在使用的代码的详细信息。
-
1.这个问题的一个原因是我将在队列中推送更多消息并且从队列中消耗消息的速率更少......因此队列中的消息不断增加并且Rabbitmq保留消息在内存中,随着内存使用量的增加,rabbitmq 在 vm_memory_high_watermark 之后不再接收任何消息 ..
-
2.我只想芹菜配置。这样一旦消息被 celery 或 consumer 消费,该消息就会自动从 rabbitmq 中删除。
-
但是你的问题是什么?该行为描述了我的默认行为。
-
如果您从不从队列中删除消息,那么这正是将要发生的事情。为什么处理完消息后不确认消息?
标签: rabbitmq celery django-celery