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