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

Какая функциональная модель используется в современном Spring Cloud Stream?

MiddleSpring Cloud StreamSpring CloudSpring Cloud >=3
Ещё спрашивают так:
  • Как писать обработчики в Spring Cloud Stream 3+?
Коротко

Функциональная модель (Spring Cloud Stream 3+): обработчики — **бины java.util.function**: Consumer<T> читает, Function<T, R> читает и пишет, Supplier<T> публикует. Аннотации @EnableBinding, @StreamListener удалены.

  • Имя бина задаёт имя привязки: process-in-0, process-out-0
  • Несколько функций — spring.cloud.function.definition=process;audit
  • Отправка «по требованию» — StreamBridge

А ещё Реактивный вариант: Function<Flux<T>, Flux<R>>

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

Подробно

До версии 3 использовали @EnableBinding, каналы и @StreamListener; сейчас это удалено.

Функциональный стиль:

@Bean
Function<OrderCreated, InvoiceRequested> billing() {
    return order -> new InvoiceRequested(order.id(), order.total());
}

@Bean
Consumer<InvoicePaid> notify() { return paid -> mailer.send(paid); }
spring.cloud.function.definition: billing;notify
spring.cloud.stream.bindings:
  billing-in-0.destination: orders
  billing-out-0.destination: invoices
  notify-in-0: { destination: payments, group: notifications }

Отправка вне функции — streamBridge.send("invoices-out-0", payload) (например, из REST-контроллера).

Плюсы: обработчики — обычные функции, легко тестировать без брокера; композиция (billing|enrich); реактивные варианты для потоков.

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

  • Функции как обработчики.
  • Именование привязок и definition.
  • StreamBridge.

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

  • Писать @StreamListener в новом коде.

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

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

Показать варианты и ответ
  • ✗Только XML endpoints
  • ✓Supplier, Function и Consumer beans
  • ✗Только наследование от AbstractController
  • ✗JSP tag libraries

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

  • Что такое input/output binding?
  • Как задать несколько функций?

Разбор темы

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

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

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

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

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