RabbitMQ — установка и управлением брокером сообщений

Admin Linux, Mac OS, Python

Описание процесса установки и управления брокером сообщения RabbitMQ.

Эта статья связана со статьёй Flask, Celery, RabbitMQ. Была вынесена в отдельную статью из-за объема информации.

Зачем нужен RabbitMQ?

RabbitMQ — это «брокер сообщений», иными словами что-то вроде почтовой службы. Он принимает сообщения (задачи), обрабатывает очередь из этих задач и отправляет результат (например, сохраняя его в бд).

В Redis, который является сервисом хранилища данных в оперативной памяти тоже есть брокер сообщений. Однако RabbitMQ от начала и до конца был создан только для этой цели. Но если на сервере уже установлен Redis, то вероятно будет разумнее использовать его, а не добавлять дополнительные зависимости.

Установка RabbitMQ на Mac OS

Прежде чем отправить работать нашего почтальона на боевом сервере надо где-то все это отладить. Т.к. я использую Mac OS, то буду описывать процесс установки на эту операционную систему.

Как и все сторонние пакеты в Mac OS RabbitMQ устанавливается через менеджер пакетов Homebrew.

Установка:

brew update
brew install rabbitmq

Потом надо его запустить:

brew services start rabbitmq

Добавить переменную окружения перед вводом команд на Mac OS. В противном случае будут ошибки:

zsh: command not found: rabbitmqctl

Для исправление ввести:

export PATH=$PATH:/usr/local/opt/rabbitmq/sbin

Если потребуется перезагрузкить кролика:

brew services restart rabbitmq

Установка RabbitMQ на Ubuntu 20.04

sudo apt update
sudo apt install rabbitmq-server

После установки сервер RabbitMQ запустится автоматически, а также будет добавлен в автозагрузку.

Проверить статус:

systemctl status rabbitmq-server.service

Все команды для RabbitMQ на Linux надо вводить или от пользователя root или через sudo.

rabbitmq_management

rabbitmq_management — это веб-панель управления очередями RabbitMQ.

Перед активацией веб-панели rabbitmq должен быть выключенным.

По умолчанию логин и пароль guest. Нет необходимости менять этого пользователя или пароля для него. Он доступен только в localhost.

Mac OS

Активация панели:

/usr/local/sbin/rabbitmq-plugins enable amqp_client

Адрес на локалке:

http://127.0.0.1:15672/

Linux

Активация:

sudo rabbitmq-plugins enable rabbitmq_management

Адрес на сервере:

http://{сайт или IP}:15672/

Если настроен фаервол ufw, то откроем для него порты:

sudo ufw allow proto tcp from any to any port 5672,15672

Добавим нового пользователя:

sudo rabbitmqctl add_user user_ploshadka.net пароль

Добавим его в группу администраторов:

sudo rabbitmqctl set_user_tags user_ploshadka.net administrator

Смена логина и пароля через веб-панель

Поменять его можно здесь:

.

При смене логина и пароля следует его также поменять в константе конфигурационного файла flask:

CELERY_BROKER_URL = 'pyamqp://guest:@dsfdK554fsm@localhost//'

Ошибки

При смене логина и пароля в команде celery inspect registered может возникнуть ошибка:

amqp.exceptions.AccessRefused: (0, 0): (403) ACCESS_REFUSED — Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile.

Пользователя guest и пароль к нему не стоит менять. Он используется для аутентификации на сервере. По этим данным можно войти только на localhost. Для входа на продакшене создать отдельного пользователя.

Смена логина и пароля через консоль

rabbitmqctl add_user ploshadka.net dsfdK554fsm
rabbitmqctl add_vhost rabbit
rabbitmqctl set_user_tags ploshadka.net administrator
rabbitmqctl set_permissions -p rabbit ploshadka.net ".*" ".*" ".*"

Полезные команды

Остановить процессы:

sudo rabbitmqctl stop

Показать пользователей:

rabbitmqctl list_users

Удалить пользователя:

rabbitmqctl delete_user пользователь

Поменять пароль пользователя:

rabbitmqctl change_password пользователь пароль

Создать новый virtualhost:

rabbitmqctl add_vhost /my_vhost

Показать доступные виртуальные хосты:

rabbitmqctl list_vhosts

Удалить виртуальный хост:

rabbitmqctl delete_vhost /название_хоста

Присвоить права виртуальному хосту:

rabbitmqctl set_permissions -p /название_хоста user ".*" ".*" ".*"

Список прав:

rabbitmqctl list_permissions -p /название_хоста

Показать права пользователей:

rabbitmqctl list_user_permissions пользователь

Удалить права пользователя:

rabbitmqctl clear_permissions -p /название_хоста пользователь

Как очистить очередь из celery

Остановить rabbitmqct, затем перейти в каталог проекта.

cd
celery pyamqp queue.purge <название очереди>
sudo rabbitmqctl start

Сбросить все по умолчанию

Полностью сбросить все настройки кролика:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"RabbitMQ — установка и управлением брокером сообщений"