2016-03-08 76 views
1

为了实现数据本地化,我需要在我的芹菜 - rabbitmq中设置消费者优先级,即消费者从特定队列中挑选具有偏好的任务。如何在芹菜中设置消费者优先级 - rabbitmq设置?

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

如何使用这个功能吗?

如果还没有实现,我该如何实现它?

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

回答

4

我也在芹菜问题页面发布了这个问题。此功能已被纳入发育版本:

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

在消费终端,你可以定义队列从消费x-priority说法。 在下面的例子,消费拾取从芹菜队列任务优先级为0,并从hipri优先10.

实施例:

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}), 
) 
+0

我没有太大的熟悉芹菜。你能举出一个更完整的例子吗?我将在哪里添加此代码?目前,我正在访问我们的RMQ队列,例如'task_run_grouping = app.signature('test.run_realtime_grouping',(context,))。set(queue ='my_rabbitmq_queue')' – Bhushan