如何使用TTL设置Celery,以清除队列中的旧消息?

 本人xiao13 发布于 2023-02-06 16:28

我正在使用Celery,Django和RabbitMQ。我正在寻找一种自动从RabbitMQ的celery队列中清除旧邮件的方法。因此,无论何时默认情况下创建队列,都应清除所有早于x秒的消息。

这些是我在settings.py中设置的变量。

CELERY_DEFAULT_EXCHANGE = 'celery'
CELERY_DEFAULT_EXCHANGE_TYPE = 'topic'
CELERY_DEFAULT_ROUTING_KEY = 'celery'
CELERY_DEFAULT_QUEUE = 'celery'
CELERY_EVENT_QUEUE_TTL= 30

我也尝试过这样做,但是导致没有消息发送到RabbitMQ。

CELERY_QUEUES = (                                                                                                                                                                 
Queue('celery', routing_key='celery', queue_arguments={'x-message-ttl': 30}),                                                                                                 
Queue('default', routing_key='default', queue_arguments={'x-message-ttl': 30}),                                                                                               
)

任何想法都欢迎。

1 个回答
  • X-消息TTL在毫秒 - 不被秒

    您想在celery配置文件中放入以下内容:

    from kombu import Exchange, Queue
    
    CELERY_QUEUES = [
                         Queue(
                             'celery',
                             Exchange('celery'),
                             routing_key = 'celery',
                             queue_arguments = {
                                                    'x-message-ttl': 30000
                                               }
                         )
                    ]
    

    2023-02-06 16:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有