Модель Spring Cloud Stream: приложение объявляет функции (Supplier, Function, Consumer), фреймворк создаёт для них привязки — входные имя-in-0 и выходные имя-out-0. Конфигурация связывает привязки с местом назначения:
spring.cloud.stream.bindings:
handleOrder-in-0:
destination: orders
group: billing
handleOrder-out-0:
destination: invoices
Binder — реализация для конкретного брокера: spring-cloud-stream-binder-kafka, -rabbit, Kafka Streams binder, Pulsar, облачные. Он создаёт потребителей и продюсеров, топики или очереди, конвертирует сообщения.
Плюсы: единый стиль кода для разных брокеров, меньше шаблонного кода, конвертация, повторы и DLQ настройками.
Ограничения: гарантии, порядок, повторы и модель групп у Kafka и RabbitMQ разные; тонкая настройка всё равно специфична для брокера. «Смена брокера одной строкой» на практике редко бывает бесплатной.