Работал ли ты с Kafka?
Что проверяют
Понимаете ли вы, что тестировщик делает с очередью, или знаете только слово. Честное «читал, но не работал» лучше, чем уверенный пересказ статьи.
Как отвечать
Сначала суть в двух фразах: Kafka это распределённый журнал событий. Тема делится на партиции, каждая партиция это упорядоченная последовательность сообщений, читатель хранит своё смещение и может перечитать всё с начала. Чтение не удаляет сообщение, в отличие от классической очереди.
Дальше конкретика о том, что делает именно тестировщик:
- проверка публикации: сервис должен положить событие в тему после действия. Читаем тему и убеждаемся, что сообщение появилось, с нужными полями и ключом;
- отправка сообщения руками: продюсером кладём событие в тему, чтобы проверить обработчик, включая заведомо битые данные;
- контракт: соответствие схеме, обратная совместимость при добавлении поля, поведение потребителя на неизвестном поле;
- дубли и порядок: Kafka даёт «хотя бы один раз», поэтому обработчик обязан быть идемпотентным. Отправляем то же событие дважды и смотрим, не создалось ли две сущности. Порядок гарантирован только внутри партиции, значит события одной сущности должны идти с одним ключом;
- отставание потребителя (consumer lag): растёт ли очередь необработанного под нагрузкой;
- очередь неразобранного (DLQ): куда уходит сообщение, которое не удалось обработать, и что происходит при повторной попытке.
Инструменты: kcat, консольные kafka-console-producer и kafka-console-consumer, интерфейсы вроде AKHQ, Offset Explorer или Conduktor, в автотестах клиент прямо из кода и Testcontainers для поднятия брокера.
Где спотыкаются
Считают Kafka обычной очередью, из которой сообщение исчезает после чтения.
Не проверяют повторную доставку и пропускают неидемпотентный обработчик.
Ждут глобального порядка по всей теме.
Приписывают себе опыт и плывут на вопросе про смещения.