Что это значит

Сервисы Directum RX обмениваются сообщениями через RabbitMQ: асинхронные обработчики, фоновые процессы, индексация, уведомления. Ошибка означает, что канал или соединение с брокером уже закрыто, а сервис пытался им воспользоваться. В тексте после неё обычно видна причина: initiated by Peer (закрыл брокер), initiated by Library (закрыл сам клиент), код и пояснение.

Платформа переподключается сама. Если ошибки единичные, пользователи ничего не замечают.

Как проверить

  1. Причину в хвосте сообщения. Частые варианты: - PRECONDITION_FAILED - delivery acknowledgement … timed out: обработчик держал сообщение дольше consumer_timeout, брокер закрыл канал; - CONNECTION_FORCED: брокер перезапускали или соединение закрыл администратор; - разрыв без кода: сеть или межсетевой экран.
  2. Состояние брокера:
rabbitmq-diagnostics status
rabbitmq-diagnostics alarms
  1. Не стоят ли очереди: растёт ли число сообщений и есть ли у очередей потребители.

Что сделать

  1. Единичные закрытия после перезапуска брокера: ничего.
  2. Регулярные delivery acknowledgement timed out: какой-то обработчик работает дольше таймаута. Разбирать сам обработчик или увеличить consumer_timeout для этой нагрузки, см. статью о таймауте подтверждения.
  3. Обрывы без причины: проверить таймауты простоя на сетевом оборудовании между сервисами и брокером.
  4. Если после ошибок очередь растёт и потребителей нет, сервис не переподключился. Помогает его перезапуск, а алерт на «очередь без потребителей» поймает это в следующий раз.