Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multi Celery projects with same RabbitMQ broker backend process

How can I use two different celery project which consumes messages from single RabbitMQ installation.

Generally, these scripts work fine if I use different rabbitmq for them. But on production machine, I need to share the same RabbitMQ backend for them.

Note: Due to some constraint, I cannot merge new projects in existing, so it will be two different project.

like image 436
Ravi Kumar Avatar asked Aug 31 '12 05:08

Ravi Kumar


1 Answers

RabbitMQ has the ability to create virtual message brokers called virtual hosts or vhosts. Each one is essentially a mini-RabbitMQ server with its own queues. This lets you safely use one RabbitMQ server for multiple applications.

rabbitmqctl add_vhost command creates a vhost.

By default Celery uses the / default vhost:

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

But you can use any custom vhost:

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

Examples:

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

like image 163
mher Avatar answered Oct 15 '22 16:10

mher