use*_*321 1 rabbitmq celery django-celery
我正在使用celery和rabbitmq,但是由于在队列中推送了多个任务,我的服务器内存利用率变得超过40%,因此rabbit将不再接受任何任务。所以我想删除那些已经执行的消息,但是由于rabbitmq的持久行为,这些消息不会自动删除,所以我想设置一些配置,例如 autoAck=True ,这样如果从 celery 消耗消息,它将从rabbitmq 队列以及我的服务器内存。请解释一下我们该如何做到这一点。
好吧,虽然我不完全理解你为什么会遇到这个问题,但很清楚发生了什么。
当消费者未能确认消息的处理时,就会发生此行为。为了确认这一点,如果您查看 RabbitMQ 管理插件,您将看到一大堆未确认的消息。这些将无法使用,但将继续保留在服务器上并占用磁盘空间和内存。
此外,如果您执行Basic.Recover,所有这些消息将被转储回队列中以再次处理。
此问题是由于您的消费者配置不正确造成的。有两种方法可以解决这个问题:
Basic.Consume)。 编辑:看起来这可能是Celery 的默认行为。Basic.Ack)。编辑:这是通过Celery 中的acks_late属性完成的。| 归档时间: |
|
| 查看次数: |
7035 次 |
| 最近记录: |