Сервис не может подключиться к RabbitMQ
BrokerUnreachableException, None of the specified endpoints were reachable в логах сервисов Directum RX: брокер недоступен по сети, отклоняет учётку или не принимает TLS. Как найти причину.
Что это значит
Клиент RabbitMQ в сервисе RX перебрал все адреса брокера и ни к одному не подключился. Само сообщение общее, настоящая причина лежит во вложенном исключении ниже по тексту лога.
Вложенные причины бывают такие. Connection refused: брокер не запущен или порт другой. ACCESS_REFUSED: неверные имя или пароль, нет прав на виртуальный хост. Ошибка проверки сертификата: клиент не доверяет сертификату брокера. Таймаут: сеть или сетевой экран.
Как проверить
Прочитайте в логе сервиса строки после ---> или Inner Exception. Затем с сервера приложений:
nc -vz <адрес брокера> 5672
rabbitmq-diagnostics listeners
rabbitmqctl list_users
rabbitmqctl list_permissions -p <виртуальный хост>
Для TLS порт обычно 5671. В логе брокера на каждую отклонённую попытку есть своя строка с причиной.
Что сделать
- Брокер не запущен: поднять его и выяснить, почему он остановился. Часто это тревога по диску или убийство по памяти.
- Отказ в доступе: сверить имя, пароль и виртуальный хост в настройках сервиса с тем, что заведено в брокере.
- Сертификат: установить корневой сертификат в хранилище доверенных на сервере приложений, проверить имя в сертификате.
- Сеть: открыть порт между сервером приложений и брокером.