RabbitMQ (Русский)
RabbitMQ - брокер сообщений на основе AMQP. Он предоставляет общую платформу для отправки и приёма сообщений и надёжное хранилище необработанных сообщений.
Contents
Установка
Установите пакет rabbitmq.
Настройка
Просто запустите сервис rabbitmq
.
По умолчанию файл с настройками располагается в /etc/rabbitmq/rabbitmq-env.conf
. Больше информации можно найти в официально документации
Включение MQTT
RabbitMQ может работать в роли сервера MQTT. Для использования такого функционала необходимо подключение плагина.
sudo -u rabbitmq rabbitmq-plugins enable rabbitmq_mqtt
Чтобы изменения вступили в силу, необходимо перезапустить сервис RabbitMQ.
Клиенты должны пройти аутентификацию, прежде чем они смогут писать в темы. RabbitMQ распределяет трафик между виртуальными хостами, вам необходимо использовать `your_login:virtual_host` в качесте имени пользователя чтобы аутентифицироваться.
Включение администрации через HTTP
Чтобы включить Web-консоль администратора выполните:
rabbitmq-plugins enable rabbitmq_management
Затем перейдите на <ip_address_of_host>:15672
. Учётные данные по умолчанию - guest:guest
Чтобы разрешеить удалённым машинам подключаться к консоли администратора по HTTP впишите в /etc/rabbitmq/rabbitmq.config
следующую строку:
[{rabbit, [{loopback_users, []}]}].
Решение проблем
Остановка rabbitmq.service зависает на минуты
Пакет rabbitmq устанавливает зависимость epmd[ссылка недействительна: package not found] (Erlang Port Mapping Daemon).
Если вы запустите rabbitmq через systemd, он запустит демон epmd, который не будет остановлен после выполнения команды systemctl stop rabbitmq
.
Для решения, добавьте юнит epmd.service как зависимость /etc/systemd/system/rabbitmq.service
в секции Unit
After=epmd.service
Не забудьте перезагрузить демоны и сервис systemctl daemon-reload && systemctl restart rabbitmq
Изменение имени хоста
Если после установки rabbitmq, вы изменили сетевое имя машины, сервис не сможет запуститься.
Это связано с записью NODENAME
в /etc/rabbitmq/rabbitmq-env.conf
.
Обновите его:
/etc/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit@new-hostname ...
После обновления RabbitMQ до последней версии, он не может запуститься
Проблема может быть вызвана неверным NODENAME
в /etc/rabbitmq/rabbitmq-env.conf
.
Вы можете скорректировать @hostname
так же как в #Изменение имени хоста.
Erlang cookie error
Ошибка аутентификации может быть вызвана неверной настройкой HOME для rabbitmq:
Authentication failed (rejected by the remote node), please check the Erlang cookie ... home dir: /root
Домашняя директория может быть задана в конфигурационном файле:
/etc/rabbitmq/rabbitmq-env.conf
... HOME=/var/lib/rabbitmq ...
can't establish TCP connection
Если вы получили эту ошибку, тогда проверьте, что первая строка с вашим хостом в /etc/hosts
содержит тот же IP-адрес, что и в /etc/rabbitmq/rabbitmq-env.conf
(эта ошибка часто случается, если вы привязали сервер rabbitmq к определённому интерфейсу).
Ссылки
конфигурация ядра erlang для тонкой настройки
rabbitmq.config примеры, не включены в пакет rabbitmq