Зачем нужен prefetch (basic.qos) в RabbitMQ и что будет при слишком большом значении?
- Что такое 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 даёт самое честное распределение?
Разбор темы
- RabbitMQ, SQS и классические очереди
Модель exchange/binding/queue, ack/nack и publisher confirms, prefetch, DLQ через DLX, отложенные сообщения, SQS Standard vs FIFO и visibility timeout.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.