Multi Celery项目具有相同的RabbitMQ代理后端进程

时间:2012-08-31 05:57:44

标签: python rabbitmq celery

如何使用两个不同的芹菜项目,它消耗来自单个RabbitMQ安装的消息。

通常,如果我使用不同的rabbitmq,这些脚本可以正常工作。但是在生产机器上,我需要为它们共享相同的RabbitMQ后端。

注意:由于某些约束,我无法合并现有的新项目,因此它将是两个不同的项目。

1 个答案:

答案 0 :(得分:22)

RabbitMQ能够创建名为virtual的虚拟消息代理 主机或虚拟主机。每一个本质上都是一个mini-RabbitMQ服务器,它有自己的队列。这使您可以安全地将一个RabbitMQ服务器用于多个应用程序。

rabbitmqctl add_vhost命令创建一个虚拟主机。

默认情况下,Celery使用 / 默认vhost:

  

celery worker --broker = amqp:// guest @ localhost //

但您可以使用任何自定义虚拟主机:

  

芹菜工人--broker = amqp:// guest @ localhost / myvhost

<强>实施例

rabbitmqctl add_vhost new_host
rabbitmqctl add_vhost /another_host
  

芹菜工人--broker = amqp:// guest @ localhost / new_host

     

celery worker --broker = amqp:// guest @ localhost // another_host