Вопрос с собеседования · Брокеры сообщений

Зачем нужен prefetch (basic.qos) в RabbitMQ и что будет при слишком большом значении?

MiddleRabbitMQ и SQSRabbitMQ
Ещё спрашивают так:
  • Что такое basic.qos в RabbitMQ?
Коротко

Prefetch — сколько неподтверждённых сообщений брокер выдаёт потребителю. Регулирует справедливое распределение и память — это backpressure.

  • Без лимита брокер отдаст всю очередь первому потребителю — остальные простаивают, память растёт
  • Маленький prefetch (1–10) — справедливо для долгих задач
  • Большой (100–300) — выше пропускная способность для быстрых

А ещё Подбирают по времени обработки и задержке сети

Подробно

Без ограничения брокер может разом отгрузить быстрому consumer-у кучу сообщений, и пока он их жуёт, остальные простаивают, а память consumer-а пухнет. basic.qos(prefetch) задаёт, сколько сообщений consumer может держать неподтверждёнными одновременно — это форма backpressure и справедливого распределения. prefetch=1 даёт максимально равномерное распределение (round-robin по готовности), но больше round-trip; умеренное значение балансирует пропускную способность и честность. Слишком большое значение возвращает проблему неравномерности и роста памяти.

Что хотят услышать

  • Что ограничивает prefetch.
  • Проблемы слишком большого значения.
  • Как подбирать.

Частые ошибки

  • Оставлять unlimited prefetch и удивляться неравномерной нагрузке.
  • Всегда ставить prefetch=1 даже для лёгких быстрых задач (теряется throughput).

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Ограничивает число неподтверждённых сообщений у consumer-а; большое значение ломает баланс
  • ✗Задаёт, сколько сообщений брокер заранее сбросит на диск
  • ✗Prefetch включает шифрование канала
  • ✗Prefetch определяет число партиций очереди

Что спросят дальше

  • Как prefetch связан с manual ack?
  • Почему prefetch=1 даёт самое честное распределение?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования