celery message priority

来源:互联网 发布:解方程 计算机算法 编辑:程序博客网 时间:2024/05/20 14:23

有一个需求,就是同一个队列中的消息使用有优先级,如何保证,优先级高的消息先消费,消费完后且task跑完后,再继续拿取消息后消费。。
实现前提:
1 worker中的task任务是这样的,一个父进程,多个子进程,父进程是分配task任务,而子进程则才是执行task任务。默认的子进程个数是机器cpu核数(不太懂核数这个概念,反正百度搜一把感觉就是那样)
2celery需要配置

CELERY_ACKS_LATE = TrueCELERYD_PREFETCH_MULTIPLIER = 1

3rabbitmq版本要高于3.5(此处官网明确有提示)
最后可以往一个队列里publish多个有优先级的消息。然后在启动celery的时候注意要设置-c 1 保证只有一个子进程消费消息就可以了,我的是实现了!细节原理以后再更新!

原创粉丝点击