RabbitMQ (Русский) - ArchWiki

# RabbitMQ (Русский)

From ArchWiki

Эта статья или раздел нуждается в переводе

Примечания: Переводчик - мимокрокодил, а статью перевёл, потому что англиками пофигу на косячный 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

Category:

- Networking (Русский)

Hidden category:

- Pages with broken package links