Главная / Справочник ошибок / RabbitMQ
Очередь уже существует с другими параметрами
PRECONDITION_FAILED - inequivalent arg 'x-queue-type' for queue 'name' in vhost '/': received 'quorum' but current is 'classic'
PRECONDITION_FAILED inequivalent arg x-queue-type: сервис объявляет очередь RabbitMQ с параметрами, которые не совпадают с уже созданной. Что делать с очередью и когда это происходит.
Что это значит
Сервис при запуске объявляет свои очереди. Если очередь с таким именем уже есть, параметры должны совпасть в точности. Здесь они разошлись: в сообщении названы параметр, полученное значение и текущее. Изменить параметры существующей очереди нельзя, поэтому брокер закрывает канал, а сервис не стартует.
Обычно это случается после смены типа очередей в настройках системы (классические и кворумные), после обновления версии или когда на один брокер смотрят два стенда с разными настройками.
Как проверить
rabbitmqctl list_queues name type arguments durable | grep <имя очереди>
Сравните вывод с тем, что запрашивает сервис в тексте ошибки.
Что сделать
- Убедиться, что на брокер не смотрит второй стенд с другими настройками. Это самая неприятная причина: два стенда будут делить очереди.
- Если настройка изменена намеренно: остановить сервисы, дождаться пустых очередей и удалить старые. Сервисы создадут их заново с новыми параметрами.
- Если очередь не пуста, сначала дать обработчикам её разобрать, вернув прежнюю настройку. Удаление очереди удаляет и сообщения в ней.
- Если настройку меняли случайно, вернуть прежнее значение.