Вопрос с собеседования · Spring

Когда в Spring выбрать AMQP/RabbitMQ, а когда Kafka?

SeniorSpring AMQP и RabbitMQRabbitMQKafkaSpring Kafka
Ещё спрашивают так:
  • RabbitMQ или Kafka в Spring-проекте?
Коротко

RabbitMQ (Spring AMQP) — очередь задач: подтверждение каждого сообщения, гибкая маршрутизация, приоритеты, отложенная доставка, задачи разной длительности. Kafka (Spring Kafka) — журнал событий: хранение и перечитывание, много независимых потребителей, порядок по ключу, большой поток.

  • Фоновые задачи — RabbitMQ; шина доменных событий и CDC — Kafka
  • Медленная задача в Kafka задерживает партицию
  • В RabbitMQ нет перечитывания истории

А ещё Spring Cloud Stream позволяет менять брокер конфигурацией — но модели разные, абстракция протекает

Подробно

Сводится к semantics сообщения. Команда «сделай это, дальше забудь» — work queue с routing, ack/nack, TTL/delay и DLQ, это RabbitMQ. Событие «вот что произошло, кто хочет — переиграет» — лог с retention и replay, независимыми consumer groups, это Kafka. Команды в Kafka и события в RabbitMQ возможны, но идут против дизайна.

Что хотят услышать

  • Различие моделей и сценарии.
  • Конкретные недостатки каждого не в своей роли.

Частые ошибки

  • Выбирать брокер по популярности.
  • Ожидать Kafka-style replay от RabbitMQ без отдельного хранения.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Kafka — для фоновых задач разной длительности
  • ✗RabbitMQ — когда нужно перечитать историю событий за неделю
  • ✓RabbitMQ — для задач с подтверждением и маршрутизацией; Kafka — журнал событий с перечитыванием
  • ✗Разницы нет: Spring Cloud Stream делает модели одинаковыми, и брокер выбирают по привычке команды

Что спросят дальше

  • Что такое DLX в RabbitMQ?
  • Почему Kafka DLT — отдельный topic?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования