Получить доступ

Когда в 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 позволяет менять брокер конфигурацией — но модели разные, абстракция протекает

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

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

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

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

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

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

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

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем