Какую задачу решает Spring Cloud Stream?
- Зачем Spring Cloud Stream?
Абстракция над брокерами: обработчик — обычная функция (Function, Consumer, Supplier), а связь с Kafka или RabbitMQ задаётся настройками через binder.
- Меньше шаблонного кода, единый стиль
- Группы потребителей, повторы, DLQ — конфигурацией
- Тонкий контроль брокера — лучше напрямую Spring Kafka или AMQP
А ещё Абстракция не прячет различия гарантий брокеров
Подробно
Выигрыш в единообразии: обработчики выглядят одинаково независимо от брокера, а вопросы групп потребителей, партиционирования и повторов решаются конфигурацией. Плата — дополнительный слой абстракции, который скрывает специфику конкретной системы; когда нужны тонкие возможности Kafka или RabbitMQ, работать с ними напрямую удобнее. Собственного брокера этот слой не содержит и заменой ему не является.
Что хотят услышать
- Назначение и функциональная модель.
Частые ошибки
- Считать, что абстракция полностью снимает необходимость понимать брокер.
- Использовать её там, где нужны специфические возможности конкретной системы.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Заменяет брокер сообщений собственной встроенной реализацией, работающей внутри приложения
- ✗Обеспечивает потоковую передачу файлов между сервисами
- ✓Отделяет код обработки от брокера: привязка к Kafka или RabbitMQ — в конфигурации
- ✗Управляет транзакциями между несколькими базами данных
Что спросят дальше
- Что произойдёт, если не задать группу потребителей?
- Когда лучше работать с брокером напрямую?
Разбор темы
- Spring Cloud Stream
Binder abstraction, functional model, bindings, consumer groups, partitioning и trade-offs поверх Kafka/RabbitMQ.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.