如何使用两个不同的芹菜项目,消耗来自单个RabbitMQ安装的消息.
通常,如果我们为他们使用不同的rabbitmq,这些脚本工作正常.但在生产机器上,我需要为他们分享相同的RabbitMQ后端.
注意:由于一些限制,我不能合并现有的新项目,所以它将是两个不同的项目.
解决方法
RabbitMQ有能力创建名为virtual的虚拟消息代理
主机或vhosts.每个本质上都是一个带有自己的队列的迷你RabbitMQ服务器.这使您可以安全地为多个应用程序使用一个RabbitMQ服务器.
主机或vhosts.每个本质上都是一个带有自己的队列的迷你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
celery worker –broker=amqp://guest@localhost/new_host
celery worker –broker=amqp://guest@localhost//another_host