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

Вывести все очереди:

rabbitmqadmin list queues name

Остановить rabbitmqct:

rabbitmqctl stop_app

Команда сброса:

rabbitmqadmin delete queue name='название очереди'

Сброс через celery:

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

Запустить rabbitmqct:

rabbitmqctl start

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

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

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

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

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