Когда полезен Spring Integration?
- Что такое Enterprise Integration Patterns?
Spring Integration — реализация Enterprise Integration Patterns: сообщения проходят через каналы и конечные точки (маршрутизаторы, преобразователи, фильтры, разделители, агрегаторы), адаптеры подключают внешние системы — файлы, FTP, почту, JMS, Kafka, HTTP.
- Хорош для интеграционных конвейеров между разнородными системами
- Java DSL: IntegrationFlow.from(...).transform(...).route(...).handle(...)
- Для простой отправки в брокер избыточен — достаточно KafkaTemplate или Spring Cloud Stream
А ещё Альтернатива вне Spring — Apache Camel
Подробно
EIP — каталог шаблонов интеграции (Хоп и Вулф): канал сообщений, маршрутизатор по содержимому, преобразователь, фильтр, разделитель, агрегатор, канал недоставленных, опрашивающий потребитель и другие.
Spring Integration реализует их как компоненты внутри приложения:
- сообщение — заголовки и полезная нагрузка;
- каналы — прямые (синхронный вызов), очереди, publish-subscribe;
- конечные точки — transformer, filter, router, splitter, aggregator, service activator (вызов вашего метода);
- адаптеры — входящие и исходящие для файлов, SFTP, почты, JDBC, JMS, AMQP, Kafka, HTTP, MQTT.
Пример задачи: забрать CSV с SFTP раз в 5 минут, разбить на строки, отфильтровать, преобразовать в события, сгруппировать по клиенту и отправить в Kafka, ошибочные — в отдельную папку.
Когда применять: интеграция с внешними и устаревшими системами, много протоколов и шагов преобразования. Когда не нужно: простое чтение и запись в один брокер — там Spring Kafka или Spring Cloud Stream проще; сложная потоковая обработка с состоянием — Kafka Streams или Flink.
Что хотят услышать
- Что такое EIP.
- Каналы, конечные точки, адаптеры.
- Когда применять и когда избыточен.
Частые ошибки
- Тянуть Spring Integration ради одной отправки в очередь.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Для связки систем по enterprise integration patterns без ручного glue-code
- ✗Для пакетной ночной обработки больших файлов с перезапуском с места любого сбоя
- ✗Для рендеринга HTML-шаблонов
- ✗Для распределённого кэширования данных в Redis между всеми сервисами
Что спросят дальше
- Что такое MessageChannel?
- Чем router отличается от filter?
Разбор темы
- Spring Batch, Integration и API styles
Batch jobs, enterprise integration patterns, Spring Data REST, HATEOAS и GraphQL.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.