Ответ вслух Middle Очереди, логи и микросервисы спрашивают часто обновлено

Как тестировать сервис с очередью

Вопрос

Сервис после оплаты публикует событие в Kafka, а склад его читает. Как ты протестируешь эту интеграцию?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала позитив: оплачиваю заказ через API и проверяю, что в топике появилось событие с ключом, равным id заказа, и с правильной схемой. Смотрю через Kafka UI или консольный потребитель, а если сервис пишет через outbox, ещё и таблицу outbox.

Что должно прозвучать в ответе

  • Позитив: событие появилось в топике с нужным ключом и схемой, склад его обработал

  • Где смотреть: Kafka UI или консольный потребитель, таблица outbox, логи по trace id

  • Дубли: повторное сообщение не даёт двойного эффекта

  • Ошибки: невалидное сообщение уходит в DLQ, потребитель лежал и догнал без потерь

  • Порядок и задержки: события одного заказа не в том порядке, большой поток

Что могут спросить следом

  • Что такое consumer lag и зачем на него смотреть?
  • Как отправить своё сообщение в топик на стенде?
  • Как автотест дожидается асинхронного результата?

Разбор

Сначала позитив: оплачиваю заказ через API и проверяю, что в топике появилось событие с ключом, равным id заказа, и с правильной схемой. Смотрю через Kafka UI или консольный потребитель, а если сервис пишет через outbox, ещё и таблицу outbox. Потом проверяю эффект на складе: товар зарезервирован. Дальше негатив. Шлю то же сообщение второй раз: резерв не должен удвоиться. Шлю битое сообщение: оно должно уйти в DLQ, а потребитель продолжить работу. Останавливаю потребителя, публикую события, поднимаю: он должен догнать всё без потерь, а consumer lag вернуться к нулю. Проверяю перепутанный порядок событий одного заказа. В автотестах асинхронность жду не через sleep, а опросом с таймаутом, например Awaitility в Java или цикл с ретраем. Логи по trace id помогают понять, на каком сервисе застряло.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.