Spring Boot: RSocket

RSocket - это двоичный протокол для использования в транспортных потоках байтов. Это позволяет симметричные модели взаимодействия через асинхронную передачу сообщений по одному соединению.

Модуль spring-messaging Spring Framework поддерживает запросы и ответчики RSocket как на стороне клиента, так и на стороне сервера.

Автоконфигурация RSocket Strategies

Spring Boot автоматически конфигурирует bean-компонент RSocketStrategies, который предоставляет всю необходимую инфраструктуру для кодирования и декодирования полезных нагрузок RSocket. По умолчанию автоконфигурация будет пытаться настроить следующее (по порядку):

  • CBOR кодеки с Jackson
  • JSON кодеки с Jackson

Стартер spring-boot-starter-rsocket обеспечивает обе зависимости.

Разработчики могут настроить компонент RSocketStrategies, создав beans, которые реализуют интерфейс RSocketStrategiesCustomizer. Обратите внимание, что их @Order важен, так как он определяет порядок кодеков.

Автоконфигурация сервера RSocket

Spring Boot обеспечивает автоматическую настройку RSocket-сервера. Необходимые зависимости обеспечиваются spring-boot-starter-rsocket.

Spring Boot позволяет выставить RSocket поверх WebSocket с сервера WebFlux или установить независимый сервер RSocket. Это зависит от типа приложения и его конфигурации.

Для приложения WebFlux (то есть типа WebApplicationType.REACTIVE) сервер RSocket будет подключен к веб-серверу, только если соответствуют следующие свойства:

spring.rsocket.server.mapping-path=/rsocket # определен путь отображения
spring.rsocket.server.transport=websocket # websocket выбран в качестве транспорта
#spring.rsocket.server.port= # порт не определен

Подключение RSocket к веб-серверу поддерживается только в Reactor Netty, так как сам RSocket построен с этой библиотекой.

В качестве альтернативы, сервер RSocket TCP или websocket запускается как независимый встроенный сервер. Помимо требований к зависимостям, единственной необходимой конфигурацией является определение порта для этого сервера:

spring.rsocket.server.port=9898 # единственная необходимая конфигурация
spring.rsocket.server.transport=tcp # вы можете настраивать другие свойства


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки