如何使用两个不同的芹菜项目,它消耗来自单个RabbitMQ安装的消息。
通常,如果我使用不同的rabbitmq,这些脚本可以正常工作。但是在生产机器上,我需要为它们共享相同的RabbitMQ后端。
注意:由于某些约束,我无法合并现有的新项目,因此它将是两个不同的项目。
答案 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