Использование RabbitMQ

Установка и конфигурация

RabbitMQ является брокером по умолчанию, поэтому он не требует никаких дополнительных зависимостей или начальной конфигурации, кроме URL-адреса экземпляра брокера, который вы хотите использовать:

broker_url = 'amqp://myuser:mypassword@localhost:5672/myvhost'

Описание URL-адресов брокера и полный список различных опций конфигурации брокера, доступных Celery, смотрите в Настройки брокера, а о настройке имени пользователя, пароля и vhost смотрите ниже.

Установка сервера RabbitMQ

Смотрите Installing RabbitMQ на сайте RabbitMQ. Для macOS смотрите Installing RabbitMQ on macOS.

Примечание

Если вы получаете ошибки nodedown после установки и использования rabbitmqctl, то эта статья в блоге поможет вам определить источник проблемы:

Настройка RabbitMQ

Для использования Celery нам необходимо создать пользователя RabbitMQ, виртуальный хост и разрешить этому пользователю доступ к этому виртуальному хосту:

$ sudo rabbitmqctl add_user myuser mypassword
$ sudo rabbitmqctl add_vhost myvhost
$ sudo rabbitmqctl set_user_tags myuser mytag
$ sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

Подставьте соответствующие значения для myuser, mypassword и myvhost выше.

Более подробную информацию о Admin Guide RabbitMQ см. в access control.

Установка RabbitMQ на macOS

Самый простой способ установить RabbitMQ на macOS - использовать Homebrew новую и блестящую систему управления пакетами для macOS.

Сначала установите Homebrew с помощью однострочной команды Homebrew documentation:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Наконец, мы можем установить RabbitMQ, используя brew:

$ brew install rabbitmq

После установки RabbitMQ с помощью brew вам нужно добавить следующее в ваш путь, чтобы иметь возможность запускать и останавливать брокер: добавьте его в файл запуска для вашей оболочки (например, .bash_profile или .profile).

PATH=$PATH:/usr/local/sbin

Настройка имени хоста системы

Если вы используете DHCP-сервер, который выдает вам случайное имя хоста, вам необходимо постоянно настраивать имя хоста. Это необходимо потому, что RabbitMQ использует имя хоста для связи с узлами.

Используйте команду scutil, чтобы навсегда установить имя хоста:

$ sudo scutil --set HostName myhost.local

Затем добавьте это имя хоста в /etc/hosts, чтобы можно было преобразовать его обратно в IP-адрес:

127.0.0.1       localhost myhost myhost.local

Если вы запустите rabbitmq-server, ваш узел rabbit теперь должен быть rabbit@myhost, что подтверждается rabbitmqctl:

$ sudo rabbitmqctl status
Status of node rabbit@myhost ...
[{running_applications,[{rabbit,"RabbitMQ","1.7.1"},
                    {mnesia,"MNESIA  CXC 138 12","4.4.12"},
                    {os_mon,"CPO  CXC 138 46","2.2.4"},
                    {sasl,"SASL  CXC 138 11","2.1.8"},
                    {stdlib,"ERTS  CXC 138 10","1.16.4"},
                    {kernel,"ERTS  CXC 138 10","2.13.4"}]},
{nodes,[rabbit@myhost]},
{running_nodes,[rabbit@myhost]}]
...done.

Это особенно важно, если ваш DHCP-сервер дает вам имя хоста, начинающееся с IP-адреса (например, 23.10.112.31.comcast.net). В этом случае RabbitMQ попытается использовать rabbit@23: недопустимое имя хоста.

Запуск/остановка сервера RabbitMQ

Чтобы запустить сервер:

$ sudo rabbitmq-server

Вы также можете запустить его в фоновом режиме, добавив опцию -detached (обратите внимание: только одно тире):

$ sudo rabbitmq-server -detached

Никогда не используйте kill (kill(1)) для остановки сервера RabbitMQ, а лучше используйте команду rabbitmqctl:

$ sudo rabbitmqctl stop

Когда сервер запущен, вы можете продолжить чтение Setting up RabbitMQ.

Вернуться на верх