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.