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

Rav*_*mar 16 python rabbitmq celery

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

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

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

mhe*_*her 24

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

rabbitmqctl add_vhost 命令创建一个vhost.

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

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

但您可以使用任何自定义vhost:

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

示例:

rabbitmqctl add_vhost new_host
rabbitmqctl add_vhost /another_host
Run Code Online (Sandbox Code Playgroud)

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

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

  • 工作得很好。在实施此方法之前,我尝试使用不同的队列/交换配置,但没有奏效。使用不同的 VHOST,没有冲突,两个 Celery 应用程序对我来说都很好。 (2认同)