如何在 celery - rabbitmq 设置中设置消费者优先级?

How do I set consumer priority in celery - rabbitmq set up?

为了实现数据局部性,我需要在我的 celery - rabbitmq 设置中设置消费者优先级,即消费者从特定队列中优先选择任务。

我发现Rabbitmq支持消费者优先级: https://www.rabbitmq.com/consumer-priority.html

如何使用此功能?

如果尚未实施,我该如何实施?

在rabbitmq示例代码中(在link中提供),x-priority参数已经提供给basicConsume。我如何在芹菜代码中实现它?

我也在芹菜问题页面上发布了这个问题。此功能已包含在开发版本中:

https://github.com/celery/celery/issues/3098

在消费者端,您可以在要消费的队列中定义 x-priority 参数。 在下面的示例中,消费者从优先级为 0 的 celery 队列和优先级为 10 的 hipri 中获取任务。

示例:

CELERY_QUEUES = (
    Queue('celery', Exchange('celery', type='direct'), routing_key='celery',
          consumer_arguments={'x-priority': 0}),
    Queue('hipri', Exchange('hipri', type='direct'), routing_key='hipri',
          consumer_arguments={'x-priority': 10}),
)