Сервис RX не смог восстановить соединение с RabbitMQ
«RabbitMQ connection '...' recovery failed» и «RabbitMQ connection '...' shutdowned» в логах Directum RX: соединение с брокером оборвалось, и автоматическое восстановление не удалось. Сервис перестаёт получать и отправлять сообщения, пока его не перезапустят.
Что это значит
Сервисы RX держат постоянные соединения с RabbitMQ. При обрыве клиентская библиотека пытается восстановить соединение сама. RabbitMQ connection '...' shutdowned пишется в момент обрыва, recovery failed когда восстановить не удалось. Внутри часто Connection failed или FailedAutoRecovery.
Самое неприятное в этой ситуации: после неудачного восстановления сервис может остаться без соединения, хотя брокер уже снова работает. Он не получает задания и не отправляет сообщения, но продолжает считаться запущенным. Справка вендора на этот случай рекомендует: если брокер был недоступен долго, после его восстановления проверить и перезапустить сервисы RX.
Как проверить
- Работает ли RabbitMQ сейчас:
rabbitmqctl status,rabbitmq-diagnostics check_running. - Есть ли у сервиса соединение с брокером: в списке соединений брокера (
rabbitmqctl list_connections client_properties) или по новым записям о подключении в журнале сервиса после восстановления брокера. - Растут ли очереди без потребителей:
rabbitmqctl list_queues name messages consumers.
Что сделать
- Восстановить RabbitMQ.
- Перезапустить сервисы RX, в журналах которых после восстановления брокера нет записей о новом подключении.
- Поставить тревогу на очереди RX без потребителей: так видно сервис, который потерял соединение и молчит.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать