Почему используется очередь в системах
Что проверяют
Понимаете ли вы, какую задачу решает очередь, и готовы ли назвать её цену. Очередь это не ускоритель, она переносит работу во времени и добавляет системе новых свойств, в том числе неприятных. Ответ без второй части выглядит книжным.
Как отвечать
Назовите причины по убыванию важности. Первая, убрать долгую работу из цикла ответа: отправку писем, генерацию отчётов, обработку загруженного файла, вызов внешнего сервиса. Пользователь получает ответ сразу, работа выполняется отдельно.
Вторая, сгладить всплеск: очередь держит пик, потребители разгребают его со своей скоростью, и база не получает нагрузку, на которую не рассчитана. Третья, пережить отказ: сообщение остаётся в очереди до подтверждения обработки, поэтому падение потребителя не теряет задачу. Четвёртая, масштабирование: добавили потребителей, пропускная способность выросла без правок в коде, который их порождает.
Дальше обязательно про свойства, с которыми придётся жить. Доставка на практике не менее одного раза, значит обработчик должен быть идемпотентным, обычно через ключ операции и проверку, что она уже выполнена. Нужны повторы с нарастающей паузой и отдельное место для сообщений, которые не обрабатываются никогда. Основная метрика не число сообщений в секунду, а отставание очереди, оно показывает, успевают ли потребители.
Где спотыкаются
Верят в доставку ровно один раз. Таймаут подтверждения, перезапуск потребителя или повтор после сбоя сети дадут дубликат, и это нормальный режим работы, а не авария. Защищает идемпотентность на стороне обработчика.
Рассчитывают на порядок. Несколько потребителей, повторы и параллельная обработка ломают последовательность. Порядок можно удержать только внутри одного ключа или раздела, и за это платят пропускной способностью.
Кладут в сообщение весь объект и ждут результата синхронно. Тяжёлое тело раздувает брокер и делает повтор дорогим, лучше передать идентификатор и прочитать данные из базы. А ожидание ответа в том же запросе возвращает ровно ту связанность, ради снятия которой очередь и появилась.