Описание процесса установки и управления брокером сообщения RabbitMQ.
Эта статья связана со статьёй Flask, Celery, RabbitMQ. Была вынесена в отдельную статью из-за объема информации.
Зачем нужен RabbitMQ?
RabbitMQ — это «брокер сообщений», иными словами что-то вроде почтовой службы. Он принимает сообщения (задачи), обрабатывает очередь из этих задач и отправляет результат (например, сохраняя его в бд).
В Redis, который является сервисом хранилища данных в оперативной памяти тоже есть брокер сообщений. Однако RabbitMQ от начала и до конца был создан только для этой цели. Но если на сервере уже установлен Redis, то вероятно будет разумнее использовать его, а не добавлять дополнительные зависимости.
Установка RabbitMQ на Mac OS
Прежде чем отправить работать нашего почтальона на боевом сервере надо где-то все это отладить. Т.к. я использую Mac OS, то буду описывать процесс установки на эту операционную систему.
Как и все сторонние пакеты в Mac OS RabbitMQ устанавливается через менеджер пакетов Homebrew.
Установка:
brew install rabbitmq
Потом надо его запустить:
Добавить переменную окружения перед вводом команд на Mac OS. В противном случае будут ошибки:
Для исправление ввести:
Если потребуется перезагрузкить кролика:
Установка RabbitMQ на Ubuntu 20.04
sudo apt install rabbitmq-server
После установки сервер RabbitMQ запустится автоматически, а также будет добавлен в автозагрузку.
Проверить статус:
Все команды для RabbitMQ на Linux надо вводить или от пользователя root или через sudo.
rabbitmq_management
rabbitmq_management — это веб-панель управления очередями RabbitMQ.
Перед активацией веб-панели rabbitmq должен быть выключенным.
По умолчанию логин и пароль guest. Нет необходимости менять этого пользователя или пароля для него. Он доступен только в localhost.
Mac OS
Активация панели:
Адрес на локалке:
Linux
Активация:
Адрес на сервере:
Если настроен фаервол ufw, то откроем для него порты:
Добавим нового пользователя:
Добавим его в группу администраторов:
Смена логина и пароля через веб-панель
Поменять его можно здесь:
При смене логина и пароля следует его также поменять в константе конфигурационного файла flask:
Ошибки
При смене логина и пароля в команде 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_vhost rabbit
rabbitmqctl set_user_tags ploshadka.net administrator
rabbitmqctl set_permissions -p rabbit ploshadka.net ".*" ".*" ".*"
Полезные команды
Остановить процессы:
Показать пользователей:
Удалить пользователя:
Поменять пароль пользователя:
Создать новый virtualhost:
Показать доступные виртуальные хосты:
Удалить виртуальный хост:
Присвоить права виртуальному хосту:
Список прав:
Показать права пользователей:
Удалить права пользователя:
Как очистить очередь из celery
Вывести все очереди:
Остановить rabbitmqct:
Команда сброса:
Сброс через celery:
Запустить rabbitmqct:
Сбросить все по умолчанию
Полностью сбросить все настройки кролика:
rabbitmqctl reset
rabbitmqctl start_app