A customer reported a function is not working in our django app. That app runs using celery and RabbitMQ. I found out that the celery worker cannot receive tasks from RabbitMQ. Then I checked my RabbitMQ cluster, both servers in the cluster are having a very high cpu load.
I googled and found this article. It suggests the high cpu load may be caused by unused queues not being freed.
So I went though the official RabbitMQ doc and found the Queue TTL policy might be useful. TTL policy will delete unused queue after the expire time you specified.
You can set the policy via
rabbitmqctl set_policy expiry ".*" '{"expires":1800000}' --apply-to queues
This example will expire any queue in the default / vhost after it has been unused for 30 minutes.