intermediate
RabbitMQ work queues
Используйте work queues для task distribution с competing consumers, explicit ack behavior, bounded retries и operational visibility.
Рабочие очереди распределяют задачи между несколькими consumer одной очереди. RabbitMQ по умолчанию доставляет round-robin; prefetch и consumer priority корректируют справедливость. Для задач, переживающих перезапуск, используйте durable-очереди, persistent-сообщения и manual ack.
Обеспечьте наблюдаемость: глубина очереди, число consumer, latency обработки и доля сбоев. Ограничивайте retry через DLX и лимит requeue. Для упорядоченных задач по сущности применяйте consistent-hash exchange или шардирование очередей вместо одной глобальной.
На интервью: опишите масштабирование worker для backlog обработки изображений, сравните competing consumers и pub/sub и перечислите метрики для алертов.
Типовые ошибки: одна очередь для задач с разной длительностью; отсутствие идемпотентности при retry; масштабирование consumer без планирования ёмкости брокера; использование work queue как лога без политики хранения.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Durable-очереди и persistent-сообщения для задач.
- Настройте prefetch под смесь длительностей job.
- Добавьте DLX и ограниченные retry.
- Мониторьте глубину, lag и здоровье consumer.