rabbitmq 的 queue 默认是不支持优先级的。要支持消息的消费优先级,必须使用『优先队列』
rabbitmq 里面,队列中的message是不分优先级的,只会先进先出,哪怕是 publish 的时候,给 message 带上 priority 也是一个摆设
想让队列支持消息优先级 priority,就要在创建队列的时候,指定 x-max-priority
你可能会很奇怪,为什么有 x-max-priority,而没有 x-min-priority 是不是?对,没有为什么,就是这么奇葩!
from kombu import Exchange, Queue
app.conf.task_queues = [
Queue('tasks', Exchange('tasks'), routing_key='tasks',
queue_arguments={'x-max-priority': 10},
]
用上面的代码,就能创建支持优先级的队列
看到队列的 feature 中,有一个 Pri 就说明这玩意已经支持优先级了
rabbitmq 的消息优先级和优先队列有什么区别?是一回事
参考文档:
kombu doc Advanced Topics
How to use priority in celery task.apply_async
https://www.cnblogs.com/zipon/p/11321061.html