RabbitMQ (Русский)

From ArchWiki
Jump to navigation Jump to search

Tango-preferences-desktop-locale.pngЭта статья или раздел нуждается в переводеTango-preferences-desktop-locale.png

Примечания: Переводчик - мимокрокодил, а статью перевёл, потому что англиками пофигу на косячный epmd (обсуждение: Talk:RabbitMQ (Русский)#)

RabbitMQ - брокер сообщений на основе AMQP. Он предоставляет общую платформу для отправки и приёма сообщений и надёжное хранилище необработанных сообщений.

Установка

Установите пакет 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