Для чего нужна Kafka?
Что проверяют
Понимаете ли вы, что это журнал событий, а не очередь задач, и что из этого следует для тестирования.
Как отвечать
Kafka это распределённый журнал: сообщения дописываются в конец темы, хранятся заданное время и читаются потребителями, каждый со своей позицией. В отличие от классической очереди, чтение не удаляет сообщение, поэтому одну и ту же тему могут независимо читать несколько разных систем.
Зачем её берут:
- развязка сервисов: отправитель не знает получателей и не ждёт их;
- сглаживание нагрузки: всплеск пишется в тему, потребители разбирают в своём темпе;
- несколько потребителей одного потока событий: аналитика, поиск, уведомления читают одни и те же события;
- перечитывание истории: новый сервис может прочитать тему с начала и построить своё состояние;
- очень высокая пропускная способность за счёт разбиения темы на партиции.
Что важно для тестировщика: порядок гарантирован только внутри партиции, поэтому события одной сущности отправляют с одним ключом; доставка по умолчанию «хотя бы один раз», значит дубли возможны и обработчик обязан быть идемпотентным; отставание потребителя (lag) это ключевая метрика, по ней видно, справляется ли система; проверка сценария не заканчивается на отправке, нужно дождаться результата у получателя.
Полезно назвать, когда Kafka не нужна: простой обмен «запрос и ответ», небольшие объёмы, задачи с приоритетами и индивидуальным подтверждением. Там уместнее RabbitMQ или обычный HTTP.
Где спотыкаются
Называют Kafka очередью задач и ждут поведения RabbitMQ: подтверждений на каждое сообщение и удаления после чтения.
Считают, что порядок сообщений глобальный.
Проверяют только факт отправки и не смотрят, что произошло на стороне потребителя.